PHPUnit - 如何测试兄弟方法调用?

时间:2015-08-06 17:21:23

标签: unit-testing phpunit

鉴于此代码:

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次。

我知道这不是一个条件问题,因为我拿出逻辑只是为了看一个直接的方法调用是否会通过测试,但它没有。所以我认为我只是没有正确地嘲笑这个对象。

1 个答案:

答案 0 :(得分:0)

看起来我在模拟中错过了setMethods(['methodA'])来电。