2016-07-11 2 views
0

У меня есть ниже тестовый скрипт:PHPUnit: Отсутствует аргумент 1 для с DataProvider

class testTest extends PHPUnit_Framework_TestCase 
{ 

    public function provider() { 
     return [ 
      [1,false], 
      [2,true] 
     ]; 
    } 

    /** 
    * @test 
    * @provider provider 
    */ 
    public function test_test($num, $expected) { 
     $actual = $num%2 ? false : true; 
     $this->assertEquals($actual, $expected); 
    } 
} 

Всякий раз, когда я запускаю это я получаю ошибку:

1) testTest::test_test 
Missing argument 1 for testTest::test_test() 

У меня есть другие тесты в тестовом костюме которые не используют dataProviders, и они работают нормально. Как это исправить ?

+1

Вы можете вставить весь класс? Но сначала попробуйте изменить имя метода поставщиков данных из 'testDataProvider' в' provider' (также измените имя в аннотации) – rokas

+0

Проверьте обновление. Изменил testDataProvider провайдеру, как вы предложили, но не повезло. –

ответ

1

Изменить @provider на @dataProvider, например.

/** 
* @dataProvider provider 
*/ 
public function test_test($num, $expected) { 
    $actual = $num%2 ? false : true; 
    $this->assertEquals($actual, $expected); 
} 

Читайте документацию: https://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.dataProvider


PS: у вас есть аргументы навыворот в ваших assertEquals. Оно должно быть:

$this->assertEquals($expected, $actual); 

снова: https://phpunit.de/manual/current/en/appendixes.assertions.html#appendixes.assertions.assertEquals

Смежные вопросы