在某些地方,我的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
}
如何实现上述情况?是否有更好的方法呢?
答案 0 :(得分:3)
答案简短:
@depends
仅适用于一个参数,因此您必须:
return array($obj1, $obj2);
public function testBothFeatures(array $myClasses) {
$obj1 = $myClasses[0];
$obj2 = $myClasses[1];
}
如果是这样你通常应该避免的事情。唯一的例外是您可能正在进行“集成”测试,以确保代码的较大部分协同工作,但只有在对每个类进行单元测试时才应该这样做。
您希望确保您的课程与应用程序的其他部分无关,这样您就可以轻松发现更改内容时完全。
如果你有一个依赖于另一个类的类,那么mock out the second class
并使用那个假对象来确保你的“被测试的类”正常工作。
答案 1 :(得分:2)
我想这会更有意义吗?
return array(
'obj1' => new Class1( ),
'obj2' => new Class2( )
);