使用真实的http请求测试离子应用程序 - 集成测试

时间:2018-03-09 12:29:40

标签: angular testing ionic-framework jasmine protractor

我想测试我的应用程序,我不确定使用哪种测试用于哪种目的。

我有一个应用程序,用于加载包含给定数据的页面,然后启动http请求(使用提供程序)以加载和更新视图中的数据。如果单击某个数据,下一页将获取数据,然后加载其余数据并更新,依此类推。我想测试更新功能和http请求。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

但是如果你必须依赖真实数据,那么允许某些或所有请求通过,如

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

在你的测试中。

<强>更新

对于 Angular 2 及更高版本,您将无法在passThrough课程中找到MockBackend方法。 但是您可以将真实XHRBackend作为依赖项包含在“假后端提供程序”中,然后使用“真实后端”向服务器执行http请求,以查找未由模拟回应。

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