【发布时间】:2017-09-07 05:06:49
【问题描述】:
我需要使用 jasmine/karma 测试在 Angular 1.5.9 下实现的内部 Angular 服务。
我需要编写一个测试来检查特定服务功能的响应是否符合预期。为此,我正在构造一个模拟对象,实例化服务,调用要测试的函数并使用expect().toBe() 检查返回值。
不幸的是,该服务对其自己的函数进行了多次调用,其中许多函数使用$http 角度服务进行了进一步调用。它这样做是为了填充对象,例如用户数据、区域设置和其他定制产品信息。可以说我无法将服务重构为更好的架构;我必须简单地构建这个测试。
由于对$http 的调用如此之多,我打算使用如下一系列行来模拟它会请求的所有数据:
var mockGetCartData = { "d": null, "message": null }; // at the top of the describe
$httpBackend.when('GET', /(.*)\/order\/api\/v1\/GetCart/).respond(200, mockGetCartData); // in the beforeEach
当我调用要测试的函数时,我会立即调用 $httpBackend.flush(),但是由于测试失败,我担心我需要做的是导致每个(伪造的)$http 调用在接下来制作。
我需要这样做还是设置所有$httpBackend.when().respond() 条目,作用于测试函数,然后调用单个flush() 就够了吗?如果这还不够,我该怎么办?
【问题讨论】:
标签: angularjs karma-jasmine httpbackend