我遇到了一个类的问题,它返回不可预测的值,并对调用该函数的方法进行单元测试。所以我要改变一个方法的返回。
我无法模拟该方法,因为我无法创建实例。这是一个例子:
// Class called MyClass
public function doSomething(){
$foo = new Foo();
$bar = $foo->getSomethingUnpredictable();
// Doing something with $bar and saves the result in $foobar.
// The result is predictable if I know what $foo is.
return $forbar;
}
// The test class
public function testDoSomething{
$myClass = new MyClass();
when("Foo::getSomethingUnpredictable()")->thenReturns("Foo");
// Foo::testDoSomething is now predictable and I am able to create a assertEquals
$this->assertEquals("fOO", $this->doSomething());
}
我可能会检查 Foo::testDoSomething 在单元测试中返回的内容,然后计算结果,但 testDoSomething 与 doSomething 的区别很小。我也无法检查其他值会发生什么。
doSomething 不能有任何参数,因为使用了可变参数(所以我无法添加最佳参数)。