phpunit - 将两个对象返回到下一个测试用例

时间:2011-05-17 11:23:25

标签: php phpunit

在某些地方,我的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  
}

如何实现上述情况?是否有更好的方法呢?

2 个答案:

答案 0 :(得分:3)

答案简短:

@depends仅适用于一个参数,因此您必须:

return array($obj1, $obj2);

public function testBothFeatures(array $myClasses) {
    $obj1 = $myClasses[0];
    $obj2 = $myClasses[1];
}

更长的回答:

你在那做什么?您是否使用一个PHPUnit测试用例来测试两个真实类?

如果是这样你通常应该避免的事情。唯一的例外是您可能正在进行“集成”测试,以确保代码的较大部分协同工作,但只有在对每个类进行单元测试时才应该这样做。

您希望确保您的课程与应用程序的其他部分无关,这样您就可以轻松发现更改内容时完全

如果你有一个依赖于另一个类的类,那么mock out the second class并使用那个假对象来确保你的“被测试的类”正常工作。

答案 1 :(得分:2)

我想这会更有意义吗?

return array(
    'obj1' => new Class1( ),
    'obj2' => new Class2( )
);