鉴于此代码:
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次。
我知道这不是一个条件问题,因为我拿出逻辑只是为了看一个直接的方法调用是否会通过测试,但它没有。所以我认为我只是没有正确地嘲笑这个对象。
答案 0 :(得分:0)
看起来我在模拟中错过了setMethods(['methodA'])
来电。