如何在单元测试中更改常量值?

How to change contant value in unit test?

我有一个如下所示的单元测试:

describe('my test', function() {
    var rootScope, $compile, mConfig;

    beforeEach(function() {
        module('app');

        module(function($provide) {
            $provide.value('MyConfig', {myvalue:"first"});
        });

        inject(function($rootScope, _$compile_,MyConfig) {
            rootScope = $rootScope;
            $compile = _$compile_;
            mConfig = MyConfig;
        });
    });

    it('test contant value', function() {
        mConfig.myvalue = "first";
        var scope = rootScope.$new();
        var element = angular.element('<div my-directive></div>');
        element = $compile(element)(scope);

        // when mConfig.myvalue = "first"
        expect($scope.value).toBe("one");

        // when mConfig.myvalue = "second"
        expect($scope.value).toBe("two");

        // when mConfig.myvalue = "thrid"
        expect($scope.value).toBe("three");

    });
});

如何在进行测试的过程中更改常量值?

不确定,但如果您的指令依赖于初始配置值,那么您可以尝试多次创建指令并断言

it('test contant value', function() {
        mConfig.myvalue = "first";
        var scope = rootScope.$new();
        var element = angular.element('<div my-directive></div>');
        element = $compile(element)(scope);

        // when mConfig.myvalue = "first"
        expect($scope.value).toBe("one");

        mConfig.myvalue = "second";
        var scope = rootScope.$new();
        element = angular.element('<div my-directive></div>');
        element = $compile(element)(scope);
        // when mConfig.myvalue = "second"
        expect($scope.value).toBe("two");

        mConfig.myvalue = "third";
        var scope = rootScope.$new();
        element = angular.element('<div my-directive></div>');
        element = $compile(element)(scope);
        // when mConfig.myvalue = "thrid"
        expect($scope.value).toBe("three");

    });