Я изучаю Codeception, и мне интересно, когда я должен использовать setUp() или tearDown(), и когда я должен использовать _before() или _after(). Я не вижу разницы. Оба метода запускаются до или после одного теста в моем тестовом файле? В чем разница между установкой() в PHPUnit и _before в Codeception
ответ
Как упоминал Габриэль Хемминг, setUp() и tearDown() являются способом PHPUnit настройки среды перед запуском каждого теста и срывом среды после запуска каждого теста. _before() и _after() - это способ создания кода.
Чтобы ответить на ваш вопрос о том, почему codeception имеет различный набор методов для этого сошлюсь на документацию codeception по: http://codeception.com/docs/05-UnitTests#creating-test
Как вы видите, в отличие от PHPUnit, методы нАлАдкА и Teardown заменяются их псевдонимы: до, после.
Фактические объекты setUp и tearDown реализуются родительским классом \ Codeception \ TestCase \ Test и устанавливают класс UnitTester, чтобы все классные действия из Cept-файлов выполнялись как часть ваших модульных тестов.
К радостным действиям, на которые относятся документы, относятся любые модули или вспомогательные классы, которые теперь могут использоваться в вашем модульном тесте.
Вот хороший пример того, как использовать модули в тестовом модуле: http://codeception.com/docs/05-UnitTests#using-modules
Давайте пример настройки данной арматуры в модульном тесте:
<?php
class UserRepositoryTest extends \Codeception\Test\Unit
{
/**
* @var \UnitTester
*/
protected $tester;
protected function _before()
{
// Note that codeception will delete the record after the test.
$this->tester->haveInDatabase('users', array('name' => 'miles', 'email' => '[email protected]'));
}
protected function _after()
{
}
// tests
public function testUserAlreadyExists()
{
$userRepository = new UserRepository(
new PDO(
'mysql:host=localhost;dbname=test;port=3306;charset=utf8',
'testuser',
'password'
)
);
$user = new User();
$user->name = 'another name';
$user->email = '[email protected]';
$this->expectException(UserAlreadyExistsException::class);
$user->save();
}
}
class User
{
public $name;
public $email;
}
class UserRepository
{
public function __construct(PDO $database)
{
$this->db = $database;
}
public function save(User $user)
{
try {
$this->db->prepare('INSERT INTO `users` (`name`, `email`) VALUES (:name, :email)')
->execute(['name' => $user->name, 'email' => $user->email]);
} catch (PDOException $e) {
if ($e->getCode() == 1062) {
throw new UserAlreadyExistsException();
} else {
throw $e;
}
}
}
}
- 1. Тест API Yii2 и Codeception с _before
- 2. В чем разница между установкой скрипта в голове и теле?
- 3. В чем разница между установкой autwiring и зависимостью в Spring?
- 4. В чем разница между установкой модели в приложении и модулем?
- 5. В чем разница между createMock и getMockBuilder в phpUnit?
- 6. В чем разница между установкой хоста и исполняющей функцией?
- 7. В чем разница между установкой mvn -U и mvn install?
- 8. В чем разница между прямой установкой pip и требованиями. Txt?
- 9. В чем разница между установкой файловой системы и монтажом диска
- 10. В чем разница между установкой gradle и gradle publishToMavenLocal?
- 11. В чем разница между установкой gradlew и gradlew assemblyRelease
- 12. В чем разница между установкой прототипа на объект и функцией?
- 13. В чем разница между установкой Android Studio и «adb install»
- 14. В чем разница между назначением наблюдателя событий и установкой onclick?
- 15. В чем разница между установкой WampServer и компонентами
- 16. В чем разница между установкой apache tomcat и базовой версией?
- 17. В чем разница между обновлением композитора и установкой композитора?
- 18. В чем разница между установкой DEVELOPER_DIR и использованием xcode-select?
- 19. В чем разница между установкой переменной Session и Meteor Streams?
- 20. Phpunit покрытие: в чем разница между опциями 'addUncoveredFilesFromWhitelist' и 'processUncoveredFilesFromWhitelist'?
- 21. Класс не найден в _before функции Codeception TestCase
- 22. msiexec Разница между установкой и установкой установки
- 23. В чем разница между двоичной установкой и компиляцией и установкой из исходного кода? Что лучше?
- 24. В чем разница между GEM_HOME и GEM_PATH?
- 25. В чем разница между «и»?
- 26. В чем разница между `{}` и `[]`?
- 27. В чем разница между == и ===?
- 28. В чем разница между «+» и «\ +»?
- 29. В чем разница между + = и = +?
- 30. В чем разница между/* ... */и/** ... */
Какого смысл? Методы имеют точно такое же поведение, как раз они из разных библиотек. –
Но почему Codeception интегрировал эти методы? Я думаю, что для этого должна быть причина. Разве это так, что это одно и то же для Unit Test, и если я продолжу тестирование на функциональность и приём, мне нужны эти методы? – astridx
О, это другой вопрос, не разница, но цель/причина. –