18. Типичный тест
• $I = new WebGuy($scenario);
• $I->click('Login');
• $I->fillField('username','davert');
• $I->fillField('password','gfhjkm');
• $I->click('Submit');
• $I->see('Hello, Davert!');
19. Запускаем…
Codeception PHP Testing Framework v1.1.3
Powered by PHPUnit 3.6.10 by Sebastian Bergmann.
Suite acceptance started
Trying to sign in as a customer (LoginCept.php)
Scenario:
* I click “Login"
=> Moved to page http://login
* I fill field “name",“davert"
* I fill field “password",“gfhjkm"
* I click “Submit"
=> Moved to page http://localhost/user/davert
* I see “Hello, Davert"
OK
Time: 2 seconds, Memory: 10.25Mb
OK (1 test, 1 assertion)
28. Интеграция с фреймворками
• Не обращаемся к веб-серверу.
• Работает гораздо быстрее.
• Stack trace и отладочная информация.
29. CodeGuy
• Простые тесты с PHPUnit
• Комплексные тесты в виде сценариев
• Доступны все модули
30. Типичный тест
function testSavingUser()
{
$user = new User();
$user->setName('Miles');
$user->setEmail(‘miles@davis.com');
$user->save();
$this->codeGuy->seeInDatabase('users',array(
'name' => 'Miles‘,
‘email' => ‘miles@davis.com‘,
));
} // интеграционный тест
31. Сценарный тест
function create(CodeGuy $I)
{
$I->wantTo('create new user by name');
$I->haveStub($user =
Stub::makeEmptyExcept('User', 'create')
);
$user->setName('davert');
$I->executeMethod($user, ‘create’);
$I->expect('user is validated and saved')
$I->seeMethodInvoked($user, 'validate')
$I->seeMethodInvoked($user, 'save');
} // юнит тест
32. Отладка
• Все промежуточные данные выводятся на
экран
• При сбое делается скриншот последней
страницы
• Модуль WebDebug
33. Очистка
• Тесты должны работать в изоляции
• Тесты не должны гадить друг другу
• Очистка кеша, данных, сессий…
40. Подходит для BDD
// As a new customer
$I->am(‘new customer’);
// I want to buy a notebook
$I->wantTo(‘buy a notebook’);
// In order to spend money faster
$I->lookForwardTo(‘spend money faster’);