Кто-то однажды сказал, что юнит-тесты должны рассказать историю. Этот подход может помочь вам написать тесты, которые имеют смысл с точки зрения приложения, которое вы кодируете. Напишите описательные имена для каждого метода тестирования, например:
function testUpdatingInsecurePasswordShouldFail() {
$data = array('User' => array(
'password' => 'password'
));
$result = $this->User->updatePassword($data);
$this->assertFalse($result);
$data = array('User' => array(
'password' => ''
));
$result = $this->User->updatePassword($data);
$this->assertFalse($result);
}
Рассказав "историю" небезопасных паролей, вы можете написать код модели, чтобы пройти новый тест. Другой пример:
function testUpdatingStrongPasswordShouldSucceed() {
$data = array('User' => array(
// forget about hashing for the moment
'password' => 'battery hoarse collect maple'
));
$this->User->updatePassword($data);
$result = $this->User->find('count', array(
'conditions' => array(
// making some assumptions about the test data here
'User.username' => 'test_user1',
'User.password' => 'battery hoarse collect maple',
),
);
$this->assertEqual($result, 1);
}
Обратите внимание, что мы делаем немного больше, чтобы убедиться, что обновление работает правильно. Когда среда тестирования начнет обнаруживать ошибки и регрессии, вы будете рады, что приложили дополнительные усилия.
Одним из преимуществ хороших описательных имен тестов является то, что теперь мы можем использовать опцию cake test --testdox
для вывода результатов на понятном английском языке:
[x] Updating insecure password should fail
[x] Updating strong password should succeed