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



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

我有一个应用程序,它加载具有给定数据的页面,然后启动 http 请求(使用提供程序)以加载和更新视图中的数据。如果您单击某个数据片段,下一页将获取已经存在的数据,然后加载其余部分并更新,依此类推。我想测试更新函数和 http 请求。

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

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

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

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

最新更新