Unit tests
Unit tests
Решил тестить апи с помощью юнит тестов и yii hhtp client. Столкнулся с проблемой хранения token'a, я решил поместить его в паблик свойства, но как понял для каждого тест метода создается свой экземпляр. Потом решил сделать статическую переменную, но и тут ничего не получается, почему со статиком проблема? Я понимаю, что это пхп подчищает походу, но почему?? Как хранить токен? Есть вариант создать один тестовый метод, а остальные будут просто как функции, которые я буду руками вызывать, но тоже такое себе. Ну ещё думал в начале каждого метода вызывать логин, но это затратно по ресурсам, нет?
Re: Unit tests
Зачем, если имеется готовое api suite? Юнит-тесты не для этого предназначены.bambiq писал(а):Решил тестить апи с помощью юнит тестов и yii hhtp client.
Тесты должны быть независимыми, чтобы спокойно запускаться в любом количестве и в любой последовательности. Для этого всё пересоздаётся для каждого теста.bambiq писал(а):Столкнулся с проблемой хранения token'a, я решил поместить его в паблик свойства, но как понял для каждого тест метода создается свой экземпляр. Потом решил сделать статическую переменную, но и тут ничего не получается, почему со статиком проблема? Я понимаю, что это пхп подчищает походу, но почему??
Впишите токен примо в фикстуру и используйте его.bambiq писал(а):Как хранить токен? Есть вариант создать один тестовый метод, а остальные будут просто как функции, которые я буду руками вызывать, но тоже такое себе. Ну ещё думал в начале каждого метода вызывать логин, но это затратно по ресурсам, нет?
Re: Unit tests
Я токен получаю после выполнения одного тест кейса, у меня не могут они быть независимые так как без логина ничего дальше работать не будет.ElisDN писал(а):Зачем, если имеется готовое api suite? Юнит-тесты не для этого предназначены.bambiq писал(а):Решил тестить апи с помощью юнит тестов и yii hhtp client.
Тесты должны быть независимыми, чтобы спокойно запускаться в любом количестве и в любой последовательности. Для этого всё пересоздаётся для каждого теста.bambiq писал(а):Столкнулся с проблемой хранения token'a, я решил поместить его в паблик свойства, но как понял для каждого тест метода создается свой экземпляр. Потом решил сделать статическую переменную, но и тут ничего не получается, почему со статиком проблема? Я понимаю, что это пхп подчищает походу, но почему??
Впишите токен примо в фикстуру и используйте его.bambiq писал(а):Как хранить токен? Есть вариант создать один тестовый метод, а остальные будут просто как функции, которые я буду руками вызывать, но тоже такое себе. Ну ещё думал в начале каждого метода вызывать логин, но это затратно по ресурсам, нет?
Re: Unit tests
Я установил модуль Rest, но там доступно всего лишь 8 методов... Я не могу банально запрос отправить, хотя тест запускается успешно(проверял вардампом). Да и $I->wantTo() тоже работает........... Как с этим работать...
Re: Unit tests
Этот токен при логине записывается в базу. Вот и заполните базу уже готовым токеном из фикстуры и посылайте уже его, как будто логин уже прошёл.bambiq писал(а):Я токен получаю после выполнения одного тест кейса, у меня не могут они быть независимые так как без логина ничего дальше работать не будет.
Код: Выделить всё
class ProfileCest
{
private $userToken = 'xxxxxxx';
...
public function testAccess(ApiTester $I)
{
$I->sendGET('/api/profile');
$I->seeResponseCodeIs(401);
}
public function testProfile(ApiTester $I)
{
$I->amBearerAuthenticated($this->userToken);
$I->sendGET('/api/profile');
$I->seeResponseCodeIs(200);
$I->seeResponseContainsJson([
'email' => 'mail@site.com',
]);
}
}
Последний раз редактировалось ElisDN 2016.10.19, 16:40, всего редактировалось 1 раз.
Re: Unit tests
Я буду тестировать только логин, регистрацию не буду, а токен записывается только при регистрации. Мне просто создать тестового пользователя в базу и втулить ему свой токен, который потом записать в фикстуру и использовать фикстуру в тестах?ElisDN писал(а):Этот токен при логине записывается в базу. Вот и заполните базу уже готовым токеном из фикстуры и посылайте уже его, как будто логин уже прошёл.bambiq писал(а):Я токен получаю после выполнения одного тест кейса, у меня не могут они быть независимые так как без логина ничего дальше работать не будет.
Код: Выделить всё
class ProfileCest { private $userToken = 'xxxxxxx'; ... public function testAccess(ApiTester $I) { $I->sendGET(Url::to(['/api/profile'])); $I->seeResponseCodeIs(401); } public function testProfile(ApiTester $I) { $I->amBearerAuthenticated($this->userToken); $I->sendGET(Url::to(['/api/profile'])); $I->seeResponseCodeIs(200); $I->seeResponseContainsJson([ 'email' => 'mail@site.com', ]); } }
Re: Unit tests
Именно.bambiq писал(а):Мне просто создать тестового пользователя в базу и втулить ему свой токен, который потом записать в фикстуру и использовать фикстуру в тестах?
Re: Unit tests
Спасибо)ElisDN писал(а):Именно.bambiq писал(а):Мне просто создать тестового пользователя в базу и втулить ему свой токен, который потом записать в фикстуру и использовать фикстуру в тестах?