我想测试我的应用程序,我不确定使用哪种测试用于哪种目的。
我有一个应用程序,用于加载包含给定数据的页面,然后启动http请求(使用提供程序)以加载和更新视图中的数据。如果单击某个数据,下一页将获取数据,然后加载其余数据并更新,依此类推。我想测试更新功能和http请求。
我想从头到尾测试我的应用程序,所以我尝试使用e2e测试(使用预读器)。但我发现无法检查后台的数据,例如从服务器返回的数据或我数据模型中保存的数据。此外,我的信息是e2e测试应该用于UI测试而不是功能测试。
所以我尝试了单元测试(使用Jasmine和Karma)。我可以访问正确的函数和变量,但我发现无法使用真正的http请求(不是模型)来进行测试。此外,我需要从最后一页的结果发送当前页面的正确的http请求,我知道这不是单元测试应该做的。
我想我需要某种集成测试,但我不知道如何用离子3来实现它。 那么:我应该使用哪种测试以及如何将其用于我需要的测试?
答案 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