【发布时间】:2015-08-07 01:38:34
【问题描述】:
鉴于此代码:
public function someMethod($conditions)
{
if(<expression>) {
$this->methodA();
} else {
$this->methodB();
}
}
methodA() 和 methodB() 都产生间接输出,并且每个都包含在自己的单元测试中。我只是想测试someMethod() 根据各种条件调用适当的兄弟。
但是,我不知道如何模拟对象来测试它。
这是我尝试过的:
$mock = $this->getMockBuilder('\My\Class')
->disableOriginalConstructor()
->getMock();
$mock->expects($this->once())
->method('methodA');
$mock->someMethod(['some' => 'condition']);
但它会抛出这个错误
方法名称的预期失败等于调用 1 次。 方法预期调用1次,实际调用0次。
事实上,我知道这不是条件问题,因为我取出逻辑只是为了查看直接方法调用是否会通过测试,但事实并非如此。所以我认为我只是没有正确地模拟对象。
【问题讨论】:
标签: unit-testing phpunit