php 5.6、 Fuel 1.8にて開発をしております。
また、モッキングフレームワークはAspectMockを利用しております。
fuel/app/vendor下にcomposer経由で取り込んだパッケージがあり、
その中のメソッドをUnit TestのためにMock化したいのですが、制約?などでうまくいかず困っております。
また、Mock化下メソッドでは、例外スローも行いたいです。
以下を検証しましたが、いずれもNGのようでして、何か問題箇所、別の対応方法はあるでしょうか?
AspectMock
vendor下のMock化はKernel再初期化やphpunit.xmlの設定検証が必要。
例外スローできない。
getMockBuilder()、createMock()
モック化したいクラスをhogeclassとします。
■ 実際のクラス <?php use Fuel\Core\Model; use xxx\yyy\HogeClass; // Mock化したいクラス class Model_aaaaa extends Model { ... public function sample_func(){ ... $hogeclass = new HogeClass(); $hogeclass ->doSomething(); // Mock化したいメソッド ... } ?>
■ testクラス <?php use PHPUnit\Framework\TestCase; class StubTest extends TestCase { public function testStub() { // SomeClass クラスのスタブを作成します $stub = $this->getMockBuilder('HogeClass') ->disableOriginalConstructor() ->disableOriginalClone() ->disableArgumentCloning() ->disallowMockingUnknownTypes() ->getMock(); // スタブの設定を行います $stub->method('doSomething') ->willReturn('foo'); $this->assertEquals('foo', $stub->doSomething()); } } ?>
↓
// oilでunit test実行 → エラー Cannot stub or mock class or interface "HogeClass" which does not exist
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。