1.0.2 • Published 7 years ago

karma-ng-automock-preprocessor v1.0.2

Weekly downloads
-
License
ISC
Repository
-
Last release
7 years ago

作用

自动对 angular 对象所依赖的对象进行自动 mock,方便写测试用例

安装

npm i karma-ng-automock-preprocessor

配置 karma

在 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);
    });
});