PHPのバージョンは5.6です。
public class A { public function a() { $result = $this->b(); return $result; } protected function b() { return 'bbb'; } }
上記のAクラスをPHPUnitでテストする際にMockryを利用して
$mock = \Mockery::mock('A')->makePartial(); $mock->shouldReceive('b')->andReturn('ccc');
のようにメソッドのアクセス修飾子がprotected
の挙動を変えたいのですが、以下のエラーになります。
InvalidArgumentException: b() cannot be mocked as it a protected method and mocking protected methods is not allowed for this mock
このテストを実行させる方法はありますでしょうか?
追記:
このAクラスのモックは、別クラスのコンストラクタに渡されてa()メソッドをコールされます。
別クラスのコンストラクタはタイプヒントでAクラスの型を指定しているので、
クラスの型を変えず、またa()メソッドの挙動もそのままである必要があります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/25 02:40 編集