首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >块无法导入嵌套块

块无法导入嵌套块
EN

Stack Overflow用户
提问于 2013-10-10 23:18:59
回答 1查看 110关注 0票数 1

我在一个方法中有以下代码:

代码语言:javascript
复制
- (NetworkOperation *)runOperationWithPath:(NSString *)path

                                           params:(NSDictionary *)params

                                       httpMethod:(NSString *)httpMethod

                                completionHandler:(DictionaryCompletionHandler)completionHandler;

{
    NetworkOperation *op = (NetworkOperation *)[self operationWithPath:path

                                                                              params:[params mutableCopy]

                                                                          httpMethod:httpMethod

                                                                                 ssl:YES];


    [op addCompletionHandler:^(NetworkOperation *completedOperation) {        
        NSData *responseData = [completedOperation responseData];

        NSError *error;

        NSDictionary *returnDict = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error];

        if(error == nil && !self.timedOut) {
            completionHandler(returnDict, nil);
        } else {
            completionHandler(nil, error);
        }
    } errorHandler:^(NetworkOperation *completedOperation, NSError *error) {
        //Manage error
    }];



    [self enqueueOperation:op];



    return op;

}

我正在为它创建单元测试,我发现了这个奇怪的行为。在单元测试中,我使用OHHTTPStubs来存根网络重置。单元测试的代码如下

代码语言:javascript
复制
- (void)testThatTheRequestRunAndCallsTheCompletationBlock; {
    //Here i have the setup of OHHTTPStubs to stub the responses.

    __block BOOL called = NO;

    [self.restClient runOperationWithPath:@"Rest/clientTest" params:nil httpMethod:@"POST" authenticationEngine:nil completionHandler:^(NSDictionary *result, NSError *error) {
        called = YES;

    }];

    while (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, true) && !blockFinished)  

    STAssertTrue(called, @"The completation block should be called");

}

如果我运行单个单元测试,所有的工作都很好,如果我运行整个单元测试套件,应用程序崩溃调用为空的completationHandler。我不明白,因为在第一种情况下(单次运行)嵌套块被正确复制,当我运行整个测试套件时,嵌套块没有被容器块正确捕获。

我尝试删除OHHTTPStubs和block wait代码,但没有任何变化。关于如何调试它的一些想法?

EN

回答 1

Stack Overflow用户

发布于 2013-10-11 00:06:49

打字错误:

代码语言:javascript
复制
- (void)testThatTheRequestRunAndCallsTheCompletationBlock; {
//                                                       ^
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19299812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档