【发布时间】:2018-07-17 21:00:27
【问题描述】:
我有以下代码:
class Foo() {
public function someMethod() {
...
if ($this->otherMethod($lorem, $ipsum)) {
...
}
...
}
}
我正在尝试测试 someMethod(),我不想测试 otherMethod(),因为它非常复杂并且我有专门的测试 - 在这里我只想模拟它并返回特定值。 所以我尝试:
$fooMock = Mockery::mock(Foo::class)
->makePartial();
$fooMock->shouldReceive('otherMethod')
->withAnyArgs()
->andReturn($otherMethodReturnValue);
我正在测试中
$fooMock->someMethod()
但它使用原始(非模拟)方法 otherMethod() 并打印错误。
Argument 1 passed to Mockery_3_Foo::otherMethod() must be an instance of SomeClass, boolean given
你能帮帮我吗?
【问题讨论】:
-
打印什么错误?
-
打印错误是因为我正在使用的模拟还没有为这个方法准备好,我想模拟这个方法,因为我正在单独测试它。
-
错误无关紧要 - 主要问题是从测试期间使用的测试方法的服务中模拟一种方法
标签: php unit-testing testing codeception mockery