Angular JS单元测试:如何在服务中测试不返回的功能



很抱歉可能重复,我没有找到任何解决我的问题的方法。

我需要在 Angular JS 应用程序中为服务编写测试。

所以我有一个返回并用作外部方法的主函数。还有一些外部帮助功能。那么如何调用和测试帮助函数(subFunc(中的东西呢?

服务.js

function TestService() {
return {
mainFunc: mainFunc
};
funcion mainFunc() {
//do some and call subFunc()
subFunc(a)
}
function subFunc(a) {
if (a === 1) {
// ... magic 1
return true;
} else {
// ... magic 2
return false;
}
}
}
})()

服务规格.js

describe('Test Service', function() {
beforeEach(module('TestService'));
var TestService;
beforeEach(inject(function($injector) {
TestService = $injector.get('TestService');
}));
it('should return true if subFunc called with 1', function () {
// ....
});
})

重写TestService以公开subFunc,以便您可以使用间谍将其存根并跟踪它是否被调用。

这就是你在编写代码之前和编写过程中编写测试的原因之一:它们会影响代码的风格,以便更容易测试。在这种情况下,subFunc必须在外部可见,以便于测试,因此使其可见。

最新更新