Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios7 xcode 5 xctest测试异步登录web服务_Ios7_Xcode5_Xctest - Fatal编程技术网

Ios7 xcode 5 xctest测试异步登录web服务

Ios7 xcode 5 xctest测试异步登录web服务,ios7,xcode5,xctest,Ios7,Xcode5,Xctest,我已经使用XCode 5制作了一个iOS应用程序,现在我想对它进行单元测试,我已经为登录服务编写了测试用例,但问题是请求正在正确形成,但没有响应,当我们正常运行应用程序时,我们收到了正确的响应,我已经用OCUnit测试了同一个服务,没有遇到任何问题。在用XTest测试web服务时,我们有什么特别的事情需要注意吗 - (void)testAsyncBlockCallback { __block BOOL jobDone = NO; [Manager doSomeOperation

我已经使用XCode 5制作了一个iOS应用程序,现在我想对它进行单元测试,我已经为登录服务编写了测试用例,但问题是请求正在正确形成,但没有响应,当我们正常运行应用程序时,我们收到了正确的响应,我已经用OCUnit测试了同一个服务,没有遇到任何问题。在用XTest测试web服务时,我们有什么特别的事情需要注意吗

- (void)testAsyncBlockCallback
{
    __block BOOL jobDone = NO;

    [Manager doSomeOperationOnDone:^(id data) {
        jobDone = YES; 
    }];

    WAIT_WHILE(!jobDone, 2.0);
}

hfossli的宏很好,但没有向runloop添加输入,因此导致它(据我所知,这段代码会引起CPU的麻烦),下面是修复它的代码:

NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
[runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];

wile(waitingForBlock){

    [runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1f]];
}
简单完整的示例用法和一个假设的AFNetworking调用:

- (void)testSync{

    __block BOOL waitingForBlock = YES;

    [self.manager POST:k_WSERVICE_SYNC_ENDPOINT
            parameters:nil
               success:^(AFHTTPRequestOperation *operation, id responseObject) {

                XCTAssertTrue(responseObject != nil, @"Sync: Got empty response, should have received something");
                waitingForBlock = NO;

          } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

                XCTFail(@"Sync: Failed to connet with error %@",error);
                waitingForBlock = NO;
          }];


    NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
    [runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode];

    while(waitingForBlock){

        [runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1f]];
    }
}

如果你不提供任何代码,很难有人能帮你。。。我在这里使用了while循环版本,这可能会很有帮助,但是如果你和我一样,从心底恨while循环,你知道如何使用“for”一词:)(如果你没有:for(;waitingForBlock;){…})