javascript - 如何在 Protractor 测试中检查应用程序 URL 的状态代码?

标签 javascript jquery angular jasmine protractor

我正在使用请求包来请求 url 并使用延迟 promise :

getMonitoredPageName = function () {
    var deferredExecutor = protractor.promise.defer();
    var defer = protractor.promise.defer();

    request('http://google.com',
    function (error, response, body) {
        if (error || response.statusCode ==400) {
            defer.reject(response.statusCode);
        } else {
            defer.fulfill(response.statusCode);
        }
    });

    return defer.promise;        
}

我从测试中调用上述函数:

  it('should log the page name of every page view in the wizard', function () {

    // We opened the first page of the wizard and we expect it to have been logged
    expect(heartBeatNotification.getMonitoredPageName()).toBeTruthy(true);
    //expect(heartBeatNotification.getMonitoredPageName()).toBe(400);
    //browser.controlFlow().execute(heartBeatNotification.getMonitoredPageName);

})

问题是无论给出什么 url,测试用例总是成功。需要编写测试用例来检查应用程序是否正在运行。

最佳答案

任何非零状态代码都将是“真实的”,因此您需要调整您的测试用例。让它检查响应是否明确为 200,或者甚至可能只是检查其是否为 2xx,因为这仍然是成功的。

expect(heartBeatNotification.getMonitoredPageName()).toEqual(200);

或者只是检查它是否大于 200 或小于 300 等。

expect(heartBeatNotification.getMonitoredPageName()).toBeGreaterThanOrEqual(200);
expect(heartBeatNotification.getMonitoredPageName()).toBeLessThan(300);

另外,请注意,您可能需要检查第一个 if block 上的逻辑。

    if (error || response.statusCode ==400) {
        defer.reject(response.statusCode);
    }

如果出现错误,可能不会有 response.statusCode(不是正值)。可能更好的是直接拒绝错误本身

关于javascript - 如何在 Protractor 测试中检查应用程序 URL 的状态代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47697847/

相关文章:

javascript - 将数据加载到嵌套的可折叠集中

javascript - c3.js 中的增量散点图

javascript - 如何在 gulp 构建期间将内容插入文件?

jquery - 我可以在 asp.net mvc 的 jquery 对话框中上传文件吗

javascript - Angular2 中 IFrame 的跨域问题

Angular 6 : Uncaught (in promise): Error: StaticInjectorError(AppModule)[RoleGuardService]

c# - 如何在 Angular 2 中序列化/反序列化 .NET 类型的 JSON

javascript - 是否可以使用 HTML、CSS 和 Javascript 构建 LibreOffice 侧边栏插件

JavaScript 性能 : Multiple script blocks Vs single bigger block

javascript - 从 Ajax 方法返回字符串结果