Symfony在我的单元测试中模拟了一种特定的方法

时间:2014-01-15 13:39:43

标签: php symfony testing mocking phpunit

在尝试模拟服务以进行单元测试时,我遇到了问题。

在我的测试课中,

    $mock = $this->getMock('MyClass');
    $mock->expects($this->any())->method('method_2')->will($this->returnValue('fake_value'));

在我的服务中, method_2()调用另一种方法(让我们说 method_1()')

由于我只想进行单元测试 method_1(),我只需要模拟 method_2() 但是当我运行此测试时, method_1()已经返回null。

你知道为什么我已经变为空了吗?

1 个答案:

答案 0 :(得分:1)

看一下getMock() helper signature,它允许你传递一个方法数组作为第二个参数,然后这些方法被模拟并返回null(除非你定义每个方法的valus应该返回)

在您的情况下,所有方法都被模拟并返回null,但method_2()除了您强制返回的值。

再试一次并替换,

$mock = $this->getMock('MyClass');

通过

$mock = $this->getMock('MyClass', array('method_2'));