使用$ httpBackend expectGET

时间:2015-04-24 16:58:29

标签: angularjs unit-testing jasmine httpbackend

当我希望调用API时,我应该包含包含所有参数的整个URL,还是只需要部分匹配?

我是否应该收听对确切网址的调用:

http://address.of.api/stuff/123?include=thing,anotherthing.name;

或者我只是需要这个:

/stuff/123

1 个答案:

答案 0 :(得分:1)

$httpBackend是Angular的Mock环境的一部分,旨在用虚假的后端替换真实的后端,或者更确切地说是模仿 Angular的$http如何在没有真正后端的情况下工作。

尽管我喜欢Angular,但我发现$httpBackend 过度设计并且不必要地复杂了它的作用:

  • 不推荐方法在测试中抛出复杂的代码。您执行的操作越多,您在测试代码中创建错误的可能性就越大,而不是您实际应该测试的错误。

  • 它促进了在代码中自由放置$http(或您的抽象层次结构中的其他低级服务)的不良做法,因为您稍后可以使用$httpBackend来模拟它

相反,它可以更清晰地将对低级方法的任何引用隔离到您自己的专用方法中,其唯一的责任是发出http请求。这些专用方法应该能够使用真正的后端,而不是假的后端!

More details here on Angular testing