我的任务是设置一些“集成测试”(不是“单元测试”或“UI 测试”[又名。E2E/量角器])。这个集成测试只是测试控制器对外部 API 的 $http POST 请求,并检查预期的响应情况。
我试过这个: - 没有 ngMock(应该直接连接到 http 资源);- 使用 ngMock(无法访问 http 资源,因为 passThrough() 未定义);- 最后尝试使用 ngMockE2E,passThrough() 据说可以工作,但请求没有返回 success() 或 error()。
我试过$httpBackend.flush()
了,它说“没有刷新请求!” (因为它使用 passThrough() 我认为不需要刷新功能)。
我试过$rootScope.$apply()
了,这没有任何区别。
不知道如何让它按预期工作,这甚至可能不使用量角器......?有人甚至为 AngularJS 应用程序做“集成测试”吗?看起来标准是“单元测试”和“E2E 测试”,而不是“集成测试”。
我设置的“单元测试”使用了一个模拟资源,并按预期调用了 success() 和 error()。
想法/想法?
[编辑:]发现问题与 Jasmine 异步测试有关。在 Jasmine 1.X 中你需要使用 run() 和 waitsFor(),在 Jasmine 2.X 中你可以使用 done()(虽然我无法让 2.X 工作,它只是破坏了我所有的测试)。所以现在我收到了来自 $http 请求的回调,但它总是 error() 被调用。现在我不知道为什么不调用success()。有任何想法吗?