У меня есть тест PHPUnit testFoo()
с провайдером данных fooProvider()
, В начале testFoo()
Я использую Runkit для переопределения метода, чтобы я мог проверить ожидаемые результаты, когда этот метод возвращает то, что я переопределил, чтобы он возвращал. Однако переопределение метода занимает немного времени, поэтому я бы хотел, чтобы в этом тесте это происходило только один раз.
Предоставляет ли инфраструктура PHPUnit функциональность для определения кода, который я хотел бы запустить только один раз перед testFoo()
работает и не один раз для каждого элемента, возвращаемого fooProvider()
или один раз за тест в комплекте (как с setUp()
)?
Используйте статическое частное свойство, чтобы указать, что метод был переопределен. Вам нужно, чтобы он был статическим, поскольку экземпляр класса теста создается для каждого случая, предоставляемого 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;
}
}
}
Других решений пока нет …