在某些地方,我的 phpunit 方法依赖于两个类,因此我决定编写一个专用方法,该方法将创建这两个类(彼此相关)的实例并将它们传递给所有 phpunit 方法。我想做类似下面的事情。
public function testGetInstance()
{
$obj1 = new Class1();
$obj2 = new Class2();
return $obj1, $obj2; //can i use list ?
}
/**
*@depends testGetInstance()
*/
public function testBothFeatures(Class1 $obj1, Class2 $obj2) //how to pass 2 instances?
{
//Do all operation related to $obj1 and $obj2
}
Run Code Online (Sandbox Code Playgroud)
如何实现上述情况?有没有更好的方法呢?
简短的回答:
@depends仅适用于一个参数,因此您必须:
return array($obj1, $obj2);
public function testBothFeatures(array $myClasses) {
$obj1 = $myClasses[0];
$obj2 = $myClasses[1];
}
Run Code Online (Sandbox Code Playgroud)
你在那做什么?您是否使用一个 PHPUnit 测试用例来测试两个真实的类?
如果是这样,那就是你通常应该避免的事情。唯一的例外是,您可能正在进行“集成”测试,以确保代码的较大部分能够协同工作,但只有在对每个类进行单元测试后才应该这样做。
您希望确保您的类独立于应用程序的其他部分工作,以便您可以轻松地发现当您更改某些内容时到底破坏了什么。
如果您有一个依赖于另一个类的类,那么mock out the second class请使用该假对象来确保您的“被测类”正常工作。