在尝试模拟服务以进行单元测试时,我遇到了问题。
在我的测试课中,
$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。
你知道为什么我已经变为空了吗?
答案 0 :(得分:1)
看一下getMock() helper signature,它允许你传递一个方法数组作为第二个参数,然后这些方法被模拟并返回null
(除非你定义每个方法的valus应该返回)
在您的情况下,所有方法都被模拟并返回null
,但method_2()
除了您强制返回的值。
再试一次并替换,
$mock = $this->getMock('MyClass');
通过
$mock = $this->getMock('MyClass', array('method_2'));