Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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
Ios 在Xcode中使用自动化工具检测HTTP响应_Ios_Ios Ui Automation - Fatal编程技术网

Ios 在Xcode中使用自动化工具检测HTTP响应

Ios 在Xcode中使用自动化工具检测HTTP响应,ios,ios-ui-automation,Ios,Ios Ui Automation,我正在使用Xcode中的自动化仪器。我想检查使用HTTP连接时得到的响应。我不知道这是否可能 这是我的密码: - (void)readMe { [HTTPConnection sendGetToUrl:[NSURL URLWithString:READ_ME_URL] target:self selector:@selector(readMeFinished:responseCode:)

我正在使用Xcode中的自动化仪器。我想检查使用HTTP连接时得到的响应。我不知道这是否可能

这是我的密码:

- (void)readMe
{
    [HTTPConnection sendGetToUrl:[NSURL URLWithString:READ_ME_URL]
                          target:self
                        selector:@selector(readMeFinished:responseCode:)
                    failSelector:@selector(downloadFailed:)
                        userInfo:nil];
}

- (void)readMeFinished:(NSData *)recievedData
          responseCode:(NSString *)responseCode
{
    //If the response is a 200 OK.
    if ([responseCode isEqualToString:@"200"]) {
        // HERE, I WOULD LIKE TO DETECT IN AUTOMATION 
        // THAT I'VE RECEIVED A 200 AND PASS THE TEST
    }
}

- (void)downloadFailed:(HTTPConnection *)connection {
    // HERE, I WOULD LIKE TO DETECT IN AUTOMATION THAT 
    // THE DOWNLOAD HAS FAILED AND DON'T PASS THE TEST
}

自动化仪器无法进入您的Objective-C代码并检查结果。只有通过用户界面才能访问应用程序的状态

因此,要检测是否有HTTP 200状态代码,可以使用一个不可见的标签以某种方式公开该事实。这将是一种向自动化工具公开内部应用程序状态的暴力方式

然而

我建议改为测试用户在网络连接成功完成后看到的情况。这是思考如何使用自动化仪器的最佳方式。它是一个集成测试工具,通过查看屏幕上控件和文本的状态,重点测试用户看到的内容和体验


你没有提供足够的上下文来说明你的代码在应用程序中的实际作用,但是假设方法
-readMe
向用户显示了一些他们必须通过单击按钮来阅读和批准的内容,我会在告诉自动化系统像用户一样单击按钮后检查结果。如果没有200状态码,用户会看到什么?他们看到错误消息了吗?然后,要断言网络代码成功,请检查以确保没有包含该错误消息的警报窗口。

出于测试自动化的目的,我认为您的解决方案最好作为单元测试而不是使用UI自动化。当您有一个测试用例,该测试用例涉及到在应用程序中导航和检查流,以及预期的UI元素正确显示和显示时,可以更好地使用UI自动化


如果您喜欢使用UIAutomation,我建议您创建一个函数来检查字段.value()是否与它们启动时的值不相等,您可以使用UIATarget.delay(x)将其放入while循环,这样您只需检查x秒。我建议这样做,因为这样你就可以添加条件,如果字段没有填充,那么你就可以在自动化测试中抛出一条错误消息。

你是对的,但我的问题是。。。“我什么时候拿到200?”。我的意思是,-readMe方法是一个异步调用,所以我不知道何时才能得到响应代码。该方法用我在响应中收到的用户数据填充一些文本字段。我知道如果文本字段被填充,我可以检查是否一切正常,但我不知道什么时候检查,因为我不知道什么时候我会得到响应。嗯……我想我要加上一个延迟或类似的东西,等待4或5秒以获得响应,然后检查字段。谢谢等待是UI自动化中内置的。查看
UIATarget
上的
pushTimeout()和
popTimeout()
方法: