1

我有一个使用这个模块bxAuth模块的测试,我要求它是这样的:

beforeEach(module('bxAuth'));

必须配置此模块才能工作。所以我有一个测试,在未配置模块时会出现错误,并测试在配置后检查模块服务是否按预期工作(每个场景都有自己的描述块)。

但是,如果我这样配置模块(仅在第二个描述块中):

angular.module('bxAuth').config(ConfigureAuth);

我的模块在所有描述块中都配置了,所以基本上它总是被配置的。

这是一个完整的代码:

describe('not configured bxAuth module', function() {

    beforeEach(module('bxAuth'));

    var bxAuth;

    beforeEach(inject(function (_bxAuth_) {
        bxAuth = _bxAuth_;
    }));

    it('should throw exception without cofiguration', function () {
        expect(bxAuth.authenticate).toThrow(); // **this expectation fails**
    });
});

describe('configured bxAuth module', function () {

    beforeEach(module('bxAuth'));

    var bxAuth;

    beforeEach(inject(function (_bxAuth_) {
        bxAuth = _bxAuth_;
    }));

    angular.module('bxAuth').config(ConfigureAuth);

    function ConfigureAuth(bxAuthProvider) {

        bxAuthProvider.config.authenticate = function (username, password) {

            var deferred = angular.injector(['ng']).get('$q').defer();

            /* replace with real authentication call */
            deferred.resolve({
                id: 1234,
                name: 'John Doe',
                roles: ['ROLE1', 'ROLE2']
            });

            return deferred.promise;
        } 
    }

    it('should not throw exception with cofiguration', function () {
        expect(bxAuth.authenticate).not.toThrow();
    });

});
4

0 回答 0