我有这样的代码单元测试的早期回报if语句
- (BOOL)shouldStartWithOptions:(Options *)options
{
if (...) {
return NO;
}
if (...) {
return NO;
}
if (...) {
return NO;
}
return YES;
}
- (void)startWithOptions:(Options *)options
{
if ([self shouldStartWithOptions:options]) {
return;
}
[self startProductA];
[self startProductB];
[self startProductC];
// and do other stuffs
}
如何将我的单元测试的事实,当我打电话myMethod
和shouldReturn
;是的话,我早回来。
一个想法是希望的方法anotherMethod
不被执行,但我不认为这会是一个好主意,因为测试可以保持绿色,如果代码更新到以下
- (void)myMethod
{
[self shouldReturn];
}
你有其他想法吗?
我会更关心测试你的方法做它应该做什么,即如果它像'createFileIfPermitted',那么你可以测试逻辑,当你做和没有权限,并在语义上'shouldReturn'意味着你不会。我认为需要更多的背景知道你的方法应该做什么。 –
我同意C.B.在这里。测试你的系统的外部接口,而不是我编辑代码的内部实现 –
。所以你的意思是你会创建两个单元测试,其中shouldStartWithOptions:返回YES或NO,并确保在第一种情况下三种产品都启动,在第二种情况下,没有产品启动? –