2
我的應用程序向外部服務註冊。該服務使用兩位數代碼撥打電話,我必須輸入(僅限第一次)以使用該服務。之後的其他服務調用工作正常。我可以爲外部服務(iPhone)構建單元測試嗎?
我如何爲一個方法建立一個單元測試,直到響應代碼輸入帶外才能完成?
任何想法? iOS SDK 4.2
我的應用程序向外部服務註冊。該服務使用兩位數代碼撥打電話,我必須輸入(僅限第一次)以使用該服務。之後的其他服務調用工作正常。我可以爲外部服務(iPhone)構建單元測試嗎?
我如何爲一個方法建立一個單元測試,直到響應代碼輸入帶外才能完成?
任何想法? iOS SDK 4.2
使用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;
}