【问题标题】:Can I build a Unit Test for an External Service (iPhone)?我可以为外部服务 (iPhone) 构建单元测试吗?
【发布时间】:2011-12-13 00:08:13
【问题描述】:

我的应用向外部服务注册。该服务给我打电话给我一个两位数的代码,我必须输入(仅限第一次)才能使用该服务。之后对服务的其余调用工作正常。

如何为在带外输入响应代码之前不完整的方法设置单元测试?

有什么想法吗? iOS SDK 4.2

【问题讨论】:

    标签: iphone xcode unit-testing


    【解决方案1】:

    使用 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 2015-10-12
      • 2021-10-27
      • 1970-01-01
      相关资源
      最近更新 更多