【发布时间】:2018-10-19 13:23:54
【问题描述】:
对于可能的重复,我很抱歉,我没有为我的问题找到任何解决方案。
我需要为 Angular JS 应用中的服务编写测试。
所以我有一个主要函数返回并用作外部方法。还有一些外部帮助功能。那么如何在帮助函数 (subFunc) 中调用和测试内容呢?
service.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;
}
}
}
})()
service.spec.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 () {
// ....
});
})
【问题讨论】:
-
您不必重新设计代码以适应您的测试。我确定“要求”是提供 API 的测试覆盖率。如果您正确彻底地测试
mainFunc(),那么这些测试将为subFunc()提供覆盖。在这种情况下,通过这种设计,代码单元是mainFunc()和subFunc()的组合。这个想法没有错,你的目标可以实现。对此有一种迂腐的观点和一种实际的观点。你会在这里得到关于这两个方面的意见。 -
好吧,请看一下您设计的代码。
subFunc()返回一个布尔值,mainFunc()从不做任何事情。如果您想直接回答代码问题 - 提供可以做某事的代码。另外,我不知道here和where是什么意思。
标签: javascript angularjs unit-testing karma-jasmine