Jasmine:期待$ http.post()没有被调用

时间:2014-01-24 16:01:02

标签: angularjs jasmine karma-runner

在angularjs程序中,如果在测试中未执行http帖子,我想使用Jasmine进行测试。

我尝试了以下代码:

expect($http.post).not().toHaveBeenCalled();

但我得到“ReferenceError:$ http未定义”

2 个答案:

答案 0 :(得分:7)

这是旧的,但我使用以下内容对此进行测试。

expect($httpBackend.flush).toThrowError('No pending request to flush !');

答案 1 :(得分:6)

这是错误是因为你从未在测试中注入$ http。您可以使用inject function执行此操作,但对于测试$http来电,您确实应该使用$httpBackend

对于您要确保不会调用它们的请求,您无需执行任何操作。当Angular收到不期望的请求时(由expect上的$httpBackend函数定义),会引发错误。因此,如果发出的请求不应该是,那么测试将从意外请求引发的错误中失败。