Как настроить объект перед тестированием - PullRequest
0 голосов
/ 27 апреля 2019

Я настраиваю некоторые модульные тесты в Codeception и мне нужно создать экземпляр объекта. Я могу сделать это в _before, но это создает новый экземпляр перед каждым тестом. Я пытался использовать _beforeSuite, но для конструктора объекта требуется переменная окружения, насколько я понимаю, это не сработает, поскольку beforeSuite запускается до начальной загрузки? Когда я пытаюсь это сделать, я получаю нулевое значение вместо переменной.

Я новичок в тестировании, поэтому мне любопытно, можно ли создавать объект в _forefore или мне следует использовать что-то еще?

1 Ответ

0 голосов
/ 27 апреля 2019

В общем, к чему вы должны стремиться при тестировании, это то, что при выполнении тестируемой системы (SUT) это происходит в четко определенном контексте. Во время выполнения теста вы хотите, чтобы все аспекты, которые могли повлиять на выполнение вашей SUT, находились под контролем. Поэтому повторное использование объектов между тестами (обычно) не рекомендуется, поскольку предыдущий тест мог внести изменения в объекты. Что может затем повлиять на результаты последующих испытаний. Рекомендация против совместного использования объектов между тестами верна, даже если вы знаете точный порядок, в котором будут выполняться тесты (тесты должны быть независимыми - много информации об этом в Интернете, например, Почему в модульном тестировании тесты не должны зависеть от порядок исполнения? ).

Поэтому, за исключением исключительных обстоятельств, предпочитайте, чтобы у вас был свежий объект для каждого теста. Вы можете создать его в _before, но может быть даже лучше (для удобства чтения) создать его непосредственно в каждом тестовом примере, который в этом нуждается.

...