【发布时间】:2011-12-13 00:08:13
【问题描述】:
我的应用向外部服务注册。该服务给我打电话给我一个两位数的代码,我必须输入(仅限第一次)才能使用该服务。之后对服务的其余调用工作正常。
如何为在带外输入响应代码之前不完整的方法设置单元测试?
有什么想法吗? iOS SDK 4.2
【问题讨论】:
标签: iphone xcode unit-testing
我的应用向外部服务注册。该服务给我打电话给我一个两位数的代码,我必须输入(仅限第一次)才能使用该服务。之后对服务的其余调用工作正常。
如何为在带外输入响应代码之前不完整的方法设置单元测试?
有什么想法吗? iOS SDK 4.2
【问题讨论】:
标签: iphone xcode unit-testing
使用 OCMock 模拟服务,允许您使用存根并返回预期结果。
例如:
假设这是您的服务:
@interface ServiceClass
- (NSString *) fetchData;
@end
这将是您的模拟服务
id serviceMock = [[OCMockObject niceMockForClass:[ServiceClass class]];
[[[serviceMock stub] andreturn:@"56"] fetchData];
// we tell the mock to return the string "56" when the method fetchData is called
SomeViewController *mvc = [[SomeViewController alloc] init];
mvc.webService = serviceMock;
// Here we are injecting a mock into a view controller
您可以使用一些依赖注入技术将此模拟注入到您的视图控制器中
@synthesize webService = _webService;
- (IBAction)buttonClicked:(id)sender
{
NSString *result = [self.webService fetchData];
}
- (ServiceClass *)webService
{
if (!_webService)
{
_webService = [[ServiceClass alloc] init];
}
return _webService;
}
【讨论】: