У мене шматок коду, який виглядає приблизно так:
function bool PassesBusinessRules()
{
bool meetsBusinessRules = false;
if (PassesBusinessRule1
&& PassesBusinessRule2
&& PassesBusinessRule3)
{
meetsBusinessRules= true;
}
return meetsBusinessRules;
}
Я вважаю, що для цієї конкретної функції повинно бути чотири одиничні тести. Три, щоб перевірити кожне з умов у операторі if і переконатися, що воно повертає помилкове. І ще один тест, який гарантує, що функція повертає істину.
Питання: Чи насправді замість цього має бути десять одиничних тестів? Дев'ять, що перевіряє кожен із можливих шляхів відмови. IE:
- Неправдивий хибний хибний
- Неправдива помилкова правда
- Неправдива правда
І так далі для кожної можливої комбінації.
Я думаю, що це надмірно, але деякі інші члени моєї команди - ні. Те, як я дивлюся на це, якщо BusinessRule1 не вдається, то він завжди повинен повертати помилкове значення, неважливо, перевірявся він перший чи останній.