我对单元测试和一般测试很陌生。我正在使用 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
}
}
测试用例中的这种流控制是可以接受的还是“代码味道”并且应该被规避?如果可以,是否有任何提示或做法,这里应该牢记在心?