我有一个带有dataProvider testFoo()
的PHPUnit测试fooProvider()
。在testFoo()
开始时我使用Runkit来重新定义一个方法,这样我就可以在该方法返回时重新定义它返回时测试预期结果。但是,重新定义该方法需要一点时间,因此我希望它只能在此测试中发生一次。
PHPUnit框架是否提供了指定我希望在testFoo()
运行之前只运行一次的代码的功能,而不是为fooProvider()
返回的每个元素运行一次,或者在套件中每次测试运行一次(与setUp()
一样)?
答案 0 :(得分:2)
使用静态私有属性标记方法已重新定义。您需要它是静态的,因为测试类是针对dataProvider提供的每种情况实例化的。
class FooTest extends PHPUnit_Framework_TestCase
{
private static $redefined = false;
/**
* @dataProvider fooProvider
*/
public function testFoo()
{
if (! self::$redefined) {
// redefinition code goes here
self::$redefined = true;
}
}
}