【发布时间】:2012-11-15 13:08:49
【问题描述】:
我有一个服务将我的其他几个服务作为依赖项。如何模拟它进行单元测试?
myApp.factory('serviceToTest',
['serviceDependency',
function(serviceDependency) {
return function(args) {
return cond(args) ? serviceDependency() : somethingElse();
};
}
]);
在上面的示例中,我想模拟出serviceDependency,以便验证它是否被调用。我该怎么做?
我可以在测试中执行以下操作:
describe("Services", function() {
describe('serviceToTest', function() {
myApp.factory('serviceDependency', function() {
var timesCalled = 0;
return function() {
return timesCalled++;
}
});
it('should do foo', inject(function(serviceToTest, serviceDependency) {
serviceToTest(["foo", "bar", "baz"]);
expect(serviceDependency()).to.equal(1);
});
});
});
这对于需要模拟的测试很有效,但它会影响随后所有其他测试的状态,这显然是一个问题。
【问题讨论】:
-
在您的测试中,您如何获得 serviceToTest 的实例?
标签: unit-testing mocking angularjs