Доброго дня!
Коллеги, кто-нибудь решил проблему использования @dataProvider’ов в Codeception, если suite использует PhpBrowser или WebDriver? Интересно именно использование датапровайдеров в чистом виде.
Вот пример:
/**
* Demo test
*
* @param string $url
* @param FunctionalTester $I
*
* @dataProvider getUrl
* @group demo
*/
public function demoTest(FunctionalTester $I, $url)
{
$I->wantTo('check counters script for url = ' . $url);
$I->amOnPage($url);
$I->seeResponseCodeIs(200);
}
/**
* data provider
*
* @return array
*/
public function getUrl()
{
return [
['', ],
['section/', ],
];
}
Результат запуска:
Failed to demo test in Tests\Functional\Mobile\HttpStatusCest::demoTest (tests/functional/Mobile/HttpStatusCest.php)
[PHPUnit_Framework_Exception] Object of class Codeception\Scenario could not be converted to string
Спасибо за ответ!
Но не могли бы вы привести пример?
Такой вариант я пробовал и до создания темы и после вашего ответа и у меня не выходит “каменная чаша”.
Вот как выглядит мой вариант вашего предложения:
protected $functionalTester;
public function _before(FunctionalTester $I)
{
$this->functionalTester = $I;
}
/**
* Demo test
*
* @param string $url
* @dataProvider getUrl
* @group demo
*/
public function demoTest($url)
{
$I = $this->functionalTester;
$I->wantTo('check counters script for url = ' . $url);
$I->amOnPage($url);
$I->seeResponseCodeIs(200);
}
/**
* data provider
*
* @return array
*/
public function getUrl()
{
return [
['', ],
['section/', ],
];
}
А вот результат запуска:
[PHPUnit_Framework_Exception] Object of class FunctionalTester could not be converted to string
Если ваш вариант работает, буду благодарен за возможность посмотреть на реализацию.
Заранее спасибо!
Спасибо за ответ!
И у вас такое работает? А Cest у вас расширяет FunctionalTester?
Сомневался, что это заработает, но попробовал. Вот результат:
Demo test (Tests\Functional\Mobile\HttpStatusCest::demoTest)
Scenario:
PHP Fatal error: Call to undefined method Tests\Functional\Mobile\HttpStatusCest::wantTo() in /home/…/tests/functional/Mobile/HttpStatusCest.php on line N
FATAL ERROR. TESTS NOT FINISHED.
Call to undefined method Tests\Functional\Mobile\HttpStatusCest::wantTo()