何时在 jasmine 中使用 spy 与 $httpBackend
When to use spy vs $httpBackend in jasmine
我正在编写 Jasmine
代码来测试一些 Restangular
逻辑。我想测试我的 'Foo' object
是否已被 Restangulraized,以便 foo.getList()
方法将调用 GET /foo
和 return 结果
我可以通过两种方式对此进行测试。我可以在 foo.getList()
上添加一个 .spy
并使其 return 达到预期的结果。或者我可以使用 $HttpBackend.whenGET("/foo")
并在那里设置我的预期结果。
是否认为其中之一更可取?
我假设 HTTPBackend
是更好的选择,因为它在逻辑流程中测试 'later'。例如,如果我使用 spy
,我无法证明我的 Restangularize 没有搞砸,而是试图解析一个不同的 URL。
但是,我正在查看继承的测试,它们都使用 spy
,并且因为我假设编写此代码的人比我好(他们不可能比我更新手Angular) 这让我想知道使用 spy
是否优于 $httpBackend
.
测试 foo.getList()
时,使用 httpBackend
。一旦你测试了只使用 foo.getList()
的函数,然后使用间谍。这是避免重复测试的最简单的解决方案。
请注意,您正在编写单元测试。每个单元都应该独立于其他单元。
让我看看我能否解释一下 Sulthan 的意思。
使用 httpBackend 编写测试 REST API 调用的单元测试以模拟服务器 API。在这种情况下,您想测试 API 使用正确的参数进行正确的调用并接收正确的响应而不实际发出 http 请求,因此服务器是黑匣子。
使用间谍来测试使用客户端 API 代码的代码。例如,控制器将使用调用 API 的客户端 Restangular 服务。在这种情况下,黑盒是 Restangular 并且只关心预期的响应。
我正在编写 Jasmine
代码来测试一些 Restangular
逻辑。我想测试我的 'Foo' object
是否已被 Restangulraized,以便 foo.getList()
方法将调用 GET /foo
和 return 结果
我可以通过两种方式对此进行测试。我可以在 foo.getList()
上添加一个 .spy
并使其 return 达到预期的结果。或者我可以使用 $HttpBackend.whenGET("/foo")
并在那里设置我的预期结果。
是否认为其中之一更可取?
我假设 HTTPBackend
是更好的选择,因为它在逻辑流程中测试 'later'。例如,如果我使用 spy
,我无法证明我的 Restangularize 没有搞砸,而是试图解析一个不同的 URL。
但是,我正在查看继承的测试,它们都使用 spy
,并且因为我假设编写此代码的人比我好(他们不可能比我更新手Angular) 这让我想知道使用 spy
是否优于 $httpBackend
.
测试 foo.getList()
时,使用 httpBackend
。一旦你测试了只使用 foo.getList()
的函数,然后使用间谍。这是避免重复测试的最简单的解决方案。
请注意,您正在编写单元测试。每个单元都应该独立于其他单元。
让我看看我能否解释一下 Sulthan 的意思。
使用 httpBackend 编写测试 REST API 调用的单元测试以模拟服务器 API。在这种情况下,您想测试 API 使用正确的参数进行正确的调用并接收正确的响应而不实际发出 http 请求,因此服务器是黑匣子。
使用间谍来测试使用客户端 API 代码的代码。例如,控制器将使用调用 API 的客户端 Restangular 服务。在这种情况下,黑盒是 Restangular 并且只关心预期的响应。