Kev*_*lar 6 unit-testing mocking objective-c ocmock
我想知道如何测试这个.我有一个方法,它接受一个参数,并根据该参数的一些属性创建另一个对象并对其进行操作.代码看起来像这样:
- (void) navigate:(NavContext *)context {
Destination * dest = [[Destination alloc] initWithContext:context];
if (context.isValid) {
[dest doSomething];
} else {
// something else
}
[dest release];
}
Run Code Online (Sandbox Code Playgroud)
我要验证的是,如果context.isValid为true,则在dest上调用doSomething,但我不知道如何使用OCMock或任何其他传统测试方法测试它(或者甚至可能),因为该对象是完全在方法范围内创建.我这是错误的方式吗?
您可以使用OCMock,但是您必须修改代码以获取Destination
对象或使用可以首先替换模拟对象的单例对象.
最干净的方法可能是实现一个
-(void) navigate:(NavContext *)context destination:(Destination *)dest;
Run Code Online (Sandbox Code Playgroud)
方法.将执行更改-(void) navigate:(NavContext *)context
为以下内容:
- (void) navigate:(NavContext *)context {
Destination * dest = [[Destination alloc] initWithContext:context];
[self navigate:context destination:dest];
[dest release];
}
Run Code Online (Sandbox Code Playgroud)
这将允许您的测试直接使用额外参数调用该方法.(在其他语言中,您只需为destination参数提供默认值即可实现此目的,但Objective-C不支持默认参数.)
归档时间: |
|
查看次数: |
416 次 |
最近记录: |