Настройка установки в PHPUnit - PullRequest
3 голосов
/ 14 июня 2010

Я хочу запустить несколько тестов с одним объектом с разными параметрами в функции setUp.

Как мне это сделать?Я попытался использовать @dataProvider, но это не работает с setUp, я быстро выяснил ..

Вот что я хотел бы сделать (используя @dataProvider):

/*
* @dataProvider provider
*/
function setUp($namespace, $args) {
   $this->tag = new Tag($namespace, $args);
}

function provider() {
   return array(
      array('hello', array()),
      array('world', array())
   );
}

function testOne() {

}

function testTwo() {

}

В результате testOne () и testTwo () запускаются для объекта с пространством имен "hello" и объекта с пространством имен "world"

Любая помощь будет принята с благодарностью!

Спасибо, Мэтт

1 Ответ

10 голосов
/ 14 июня 2010

Вам не нужно присваивать SUT переменной-члену экземпляра TestCase, если она не подходит для теста.Просто создайте новые экземпляры Tag в поставщике и передайте их функции теста вместо

/**
 * Provides different test Tag instances
 */
function tagProvider() {
   return array(
      array( new Tag( 'hello', array() ) ),
      array( new Tag( 'world', array() ) )
   );
}

/*
* @dataProvider tagProvider
*/
function testOne( Tag $tag ) {
    $this->assertSomething( $tag );
}

Если testOne изменяет тест таким образом, что testTwo зависит от изменений, вы можете сделать:

/*
* @dataProvider tagProvider
*/
function testOne( Tag $tag ) {
    $this->assertSomething( $tag );
    return $tag;
}

/*
* @depends testOne
*/
function testTwo( Tag $tag ) {
    $this->assertSomething( $tag );
}

И тогда testTwo будет использовать возвращенный $tag из testOne вместе с любыми изменениями состояния, внесенными в него в testOne.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...