Я новичок в модульном тестировании и тестировании в целом. Я занимаюсь разработкой с помощью phpUnit, но поскольку мой вопрос носит более общий характер / вопрос дизайна, фактическая среда не должна иметь слишком большого значения.
Полагаю, хорошей практикой является написание ваших тестовых случаев как можно более конкретным . Например (чем позже, тем лучше):
assertNotEmpty($myObject); // myObject is not Null
assertInternalType('array', $myObject); // myObject is an array
assertGreaterThan(0, count($myObject)); // myObject actually has entries
Если это так, вот мой вопрос :
Является ли общепринятой практикой писать некоторый элемент управления потоком внутри тестового сценария , если состояние объекта, с которым он тестируется, зависит от внешних источников (то есть БД) - или даже вообще?
Как:
if (myObject !== null) {
if (count(myObject) > 0) {
// assert some Business Logic
}
else {
// assert some different Business Logic
}
}
Допустим ли этот вид управления потоком внутри тестового набора или это «кодовый запах» и его следует обойти? Если все в порядке, есть ли какие-нибудь советы или практики, о которых следует помнить здесь?