以下场景:
public class InputFilter(){
public function isInputValid($input) : bool
{
$isValid = false;
if($inputA && $inputB && $inputC){
return true;
}
if($inputD && $inputE){
return true;
}
...
return $isValid;
}
}
public Test(){
//1. TestCase
isInputValid_ValidInputABCGiven_ShouldReturnTrue(){
$input[a => true, $b => true, c => true, d => false, e => false]
assertSame(true, InputFilter->isInputValid, '')
}
//2. TestCase
isInputValid_ValidInputBCGiven_ShouldReturnTrue{
$input[a => false, $b => false, c => false, d => true, e => true]
assertSame(true, InputFilter->isInputValid, '')
}
}
我真的不知道如何测试这个场景。让我们想象第一个测试用例失败然后我不知道是因为第一个 if 语句 (a && b && c ) 失败还是第二个 if 语句 (d && e) 有问题。如果第二个测试也失败了,我将不知道这些语句中的哪一个导致了失败。真正的问题有多个如果条件...
有什么方法可以测试该方法,以便我知道测试失败的原因?
If 语句永远不会“有问题”。他们完全按照他们所说的去做,100% 的时间。无需测试 if 语句。
但是,您应该测试个别场景。
例如:
function testResultReturnsFalseForADTrue
{
$input[a => true, $b => false, c => false, d => true, e => false]
assertFalse(InputFilter->isInputValid);
}
如果第二个测试也失败了,我将不知道这些语句中的哪一个导致了失败
哪个 if 语句导致失败并不重要。如果您正在使用 A&B return false 测试该输入并且它返回 true,那么您已经拥有足够的信息。
当您期待 false 或反之时,无法指出返回 true 的确切行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句