自动对 angular 对象所依赖的对象进行自动 mock,方便写测试用例
npm i karma-ng-automock-preprocessor
在 karma.conf.js 加入
preprocessors: {
'../js/services/**/*.js': ['ng-automock'],
'spec/app.services/mocking-dependencies/mocking-dependencies-service.js': ['ng-automock'],
},
angular.module('myapp.common').factory('MockingDependenciesService', ['MockingDependenciesRepository', 'dummy',
function (MockingDependenciesRepository, dummy)
{
return {
foo: function ()
{
return 1 + MockingDependenciesRepository.func();
},
};
}]);
describe("MockingDependenciesService Test", function ()
{
var MockingDependenciesService;
beforeEach(function ()
{
module('myapp.common');
module(function($provide)
{
// 自动 mock MockingDependenciesService 所有依赖项,排除 angular 内置的
automock_MockingDependenciesService($provide);
// 手动 mock 依赖项
$provide.factory('MockingDependenciesRepository', function ()
{
return {
func: function ()
{
return 999;
}
};
});
});
inject(function ($injector)
{
MockingDependenciesService = $injector.get('MockingDependenciesService');
});
});
it("Test Mocking Services", function ()
{
expect(MockingDependenciesService.foo()).toEqual(1000);
});
});