0

我正在努力为具有类似接口的 API 包装器编写单元测试

- (void)publish:(id<MyCustomRequest>)aRequest completionHandler:(void (^)(id<MyCustomResponse>, NSError *)) completionBlock

它在后台调用此方法:

NSURLConnection sendAsynchronousRequest:queue:completionHandler

我不想使用委托,因为公开的 API 更适合 sendAsynchronousRequest 方法(并且每个请求不需要单独的累加器对象)。此外,我使用 OCMockito 来模拟整个代码的其余部分,它不支持部分模拟或模拟类方法。

是否有任何其他测试技术可以测试此功能?是否有必要使用委托?

4

1 回答 1

0

使用基于委托的 API。我意识到它的代码更多,但便利的 API 显然不足以满足您的需求(即可以用 OCMockito 模拟)。此外,不必担心为每个请求分配一个辅助设备的“开销”。我很有信心,在你的调用下,系统框架中会在后台分配几十个对象+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:];你不应该担心。也就是说,单个对象可以是多个请求的委托,因此您不必拥有多个请求。

于 2013-02-05T23:49:27.387 回答