何时在茉莉花中使用间谍vs $ httpBackend

时间:2015-03-16 14:43:36

标签: angularjs testing jasmine restangular

我正在编写Jasmine代码来测试一些Restangular逻辑。我想测试我的'Foo'object是否已进行Restangulraized,以便foo.getList()方法调用GET /foo并返回结果

我可以用两种方式测试它。我可以在.spy上添加foo.getList()并让它返回预期结果。或者,我可以使用$HttpBackend.whenGET("/foo")并在那里设置我的预期结果。

其中一个被认为是更可取的吗?

我认为HTTPBackend会是更好的选择,因为它会在逻辑流程中“稍后”进行测试。如果我使用spy,我无法证明,例如,我的Restangularize没有搞砸,并试图解决不同的URL。

但是,我正在查看继承的测试,他们都使用spy,因为我认为编写此代码的人比我好(他们不能比Angular更新手了)这让我想知道使用spy优于$httpBackend是否有优势。

2 个答案:

答案 0 :(得分:6)

在测试foo.getList()时,请使用httpBackend。测试仅使用foo.getList()的函数后,请使用间谍。这是避免测试重复的最简单的解决方案。

请注意,您正在编写单元测试。每个单位都应独立于其他单位。

答案 1 :(得分:3)

让我看看我是否可以解释Sulthan的意思。

使用httpBackend编写测试REST API调用的单元测试,以模拟服务器API。在这种情况下,您希望测试API使用正确的参数进行正确的调用,并在没有实际发出http请求的情况下接收正确的响应,因此服务器就是黑盒子。

使用spy测试使用客户端API代码的代码。例如,控制器将使用调用API的客户端Restangular服务。在这种情况下,黑框是Restangular,只关心预期的响应。