PHPUnit setUp для запуска отдельного теста с dataProvider

У меня есть тест PHPUnit testFoo() с провайдером данных fooProvider(), В начале testFoo() Я использую Runkit для переопределения метода, чтобы я мог проверить ожидаемые результаты, когда этот метод возвращает то, что я переопределил, чтобы он возвращал. Однако переопределение метода занимает немного времени, поэтому я бы хотел, чтобы в этом тесте это происходило только один раз.

Предоставляет ли инфраструктура PHPUnit функциональность для определения кода, который я хотел бы запустить только один раз перед testFoo() работает и не один раз для каждого элемента, возвращаемого fooProvider() или один раз за тест в комплекте (как с setUp())?

1 ответ

Используйте статическое частное свойство, чтобы указать, что метод был переопределен. Вам нужно, чтобы он был статическим, потому что экземпляр класса теста создается для каждого случая, предоставляемого 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;
        }
    }
}
Другие вопросы по тегам