【问题标题】:Test ionic app with real http requests - Integration Test使用真实的 http 请求测试 ionic 应用程序 - 集成测试
【发布时间】:2018-03-09 12:29:39
【问题描述】:

我想测试我的应用,但我不确定要为哪个目的使用哪种测试。

我有一个应用程序,它加载一个包含给定数据的页面,然后启动一个 http 请求(使用提供程序)来加载和更新视图中的数据。如果您单击某些数据,下一页会获取已经存在的数据,然后加载其余数据并进行更新等等。我想测试更新功能和http请求。

我想从头到尾测试我的应用程序,所以我尝试使用 e2e 测试(使用 pretractor)。但我发现无法在后台检查数据,例如从服务器返回的数据或我的数据模型中保存的数据。另外,我的信息是e2e测试应该用于UI测试而不是功能测试。

所以我尝试了单元测试(使用 Jasmine 和 Karma)。我可以访问正确的函数和变量,但我发现无法使用真实的 http 请求(不是模型)进行测试。此外,我需要最后一页的结果来为当前页面发送正确的 http 请求,我知道这不是单元测试应该做的。

我想我需要某种集成测试,但我不知道如何使用 ionic 3 来实现它。 那么:我应该使用哪种测试以及如何将其用于我需要的测试?

【问题讨论】:

    标签: angular testing ionic-framework jasmine protractor


    【解决方案1】:

    Karma 仅用于测试基于浏览器的代码,而不用于测试您的 http 请求。 为它设置一个MockBackend

    但如果您必须依赖真实数据,则允许某些或所有请求通过

    angular.module('yourModule').run(function ($httpBackend) {
        $httpBackend.whenGET(/.*/).passThrough();
    }
    

    在您的测试中。

    更新:

    对于 Angular 2 及更高版本,您不会在 MockBackend 类上找到 passThrough 方法。 但是您可以将真正的XHRBackend 作为对“假后端提供程序”的依赖项包含在内,然后使用“真正的后端”向服务器执行http 请求,以获取任何未被模拟响应处理的 URL。

    请参阅此博客了解更多信息:http://jasonwatmore.com/post/2016/11/24/angular-2-mockbackend-example-for-backendless-development

    【讨论】:

    • 感谢您的回答。所以你认为我应该使用单元测试?不幸的是,我认为您的第二个建议仅适用于角度 1,我必须使用角度 4。有没有办法在角度 4 中做同样的事情?
    • 我的意思是您不使用真正的后端进行测试,因为在应用程序中使用Karma/e2e,您正在尝试测试应用程序(而不是后端),理想情况下不需要使用任何真实数据。如果您需要测试您的后端,那么理想情况下您将使用后端配置您的 mocha 测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2020-11-19
    • 2015-02-12
    • 1970-01-01
    相关资源
    最近更新 更多