我的角度项目我有一个依赖于服务2的service1.Service1正在为callbackSuccess发送一个相当复杂的函数到service2
service2.js
this.getData = function (url, callbackSuccess, callbackError) {
我不确定是否有很多单元测试服务2,我应该专注于service1,因为大多数逻辑都包含在那里。有人可以建议吗?
答案 0 :(得分:2)
您可以在service2
中的函数上创建一个间谍,或者完全模拟service2
。
var data_spy = spyOn(service2, 'getData').andCallFake(
function(url, callbackSuccess, callbackError) {
callbackSuccess(mock_data); // Mock the data somewhere
}
);
使用它是一个好主意,因为它消除了对测试中service2
功能的依赖。虽然您仍应考虑测试service2
。
其他一些建议。这种模式似乎非常适合承诺,因为有一个决心和拒绝回调。我建议你看一下$q documentation。
希望这有帮助!
答案 1 :(得分:1)
service2
吗?如果service2
显然是正确的,因为它很简单就可以检查它 - 那么你可能不需要测试它。但是,如果它比那更复杂,那么你可能想测试它。
我可以看到它必须至少做三件事:
url
对我而言,这项工作量会让我添加一些测试 - 甚至没有关于例外的异常处理......测试它,因为它很简单,也应该很简单。
service1
如果service1
包含复杂的回调,那么它肯定应该进行测试。确保可以从测试中访问回调,这样您就可以在将service1
传递给service2
之前与service2
可能正在执行的其他操作完全隔离的情况下对其进行彻底测试。
最终,您会提出一个意见问题,而且这个问题依赖于我们不了解的有关您的代码库,目标和截止日期的大量信息。我最好的答案是:测试{{1}}。