angularjs - 获取 Karma 中的 Angular 常数

标签 angularjs ionic-framework karma-runner karma-jasmine

鉴于应用程序启动:

angular.module("starter", [ "ionic" ])
    .constant("DEBUG", true)
    .run(function() {
        /* ... */
    });

如何测试 DEBUG 的值?

尝试时:

describe("app", function() {

    beforeEach(function() {
        module("starter");
    });

    describe("constants", function() {
        describe("DEBUG", inject(function(DEBUG) {
            it("should be a boolean", function() {
                expect(typeof DEBUG).toBe("boolean");
            });
        }));
    });
});

我刚刚得到

TypeError: 'null' is not an object (evaluating 'currentSpec.$modules')
    at workFn (/%%%/www/lib/angular-mocks/angular-mocks.js:2230)
    at /%%%/www/js/app_test.js:14
    at /%%%/www/js/app_test.js:15
    at /%%%/www/js/app_test.js:16

最佳答案

确保它在正确的位置实例化。 在这种情况下,beforeEach 没有运行来加载模块,因为 DEBUG 正在 describe 中进行 inject() 编辑 block ,而不是 it block 。以下工作正常:

describe("app", function() {

    var DEBUG;

    beforeEach(function() {
        module("starter");
    });

    describe("constants", function() {
        describe("DEBUG", function() {
            it("should be a boolean", inject(function(DEBUG) {
                expect(typeof DEBUG).toBe("boolean");
            }));
        });
    });
});

关于angularjs - 获取 Karma 中的 Angular 常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26733273/

相关文章:

javascript - PhantomJs:找不到变量映射

angularjs - Angular 1.1.5 测试基于 promise 的服务

javascript - 添加新选择,然后以 Angular 将选择添加到数组中

javascript - 在页面上引导多个 Angular 应用程序会导致 Controller 未定义的错误

javascript - CSS和JS图像在滚动顶部缩放

javascript - 身份验证在 ionic 和 Firebase 中始终处于事件状态

javascript - 调用异步函数时如何给数组赋值?

javascript - 如何在表的一行中迭代时获取选择元素的 ng-model?

android - 用cordova构建android

karma-runner - 使用 Karma 启动最小化的浏览器实例