前提・実現したいこと
PHPUnitでテストコードを書いており、Mockeryライブラリを利用してモックを作成しているのですが、
下記ソースコードで一部メソッドのみをモック化しようとしているのですが、うまくいきません。
もしご存知の方いらっしゃれば教えていただきたいです。
すいませんが宜しくお願い致します。
追記
テストしたいメソッド内でnewでインスタンスを作成しているクラスを一部メソッドをモック化したいのですが、
どうしても利用している他のメソッドもshouldReceiveをしてモック化しないとダメなのです。
下記はサンプルコードです。
該当のソースコード
<?php use \Mockery as M; class TestInfo extends TestCase { private $target; public function setUp() { $this->target = m::mock('overload:Info'); } public function test_doSomeThing_チェックOK() { $infoUse = new InfoUse(); $this->target->shouldReceive('getInfo')->andReturn('成功'); $this->assertEquals('成功5', $info->useInfo()); } } <?php テスト対象クラス class InfoUse { public function useInfo(){ $info = new info(); $result = $info->getInfo(); $result = $result . $info->num(); return $result; } } <?php モック化したいクラス ※getInfoのみモック化したい class Info { public function getInfo(){ $result =DB::connection('mysql_one') ->table('Info') ->leftJoin('migrations AS sti', function($join) { $join->on('Info.id', '=', 'sti.id') ->where('sti.migration', '=', '1'); }) ->select('*')->toSql(); return $result; } public function num(){ $num = 5+2; return $num; } } 下記方法だとエラーで実行すらされません。 $this->infoMock = m::mock('overload:Ingo[getInfo]');あなたの回答
tips
プレビュー