Get angular constants in karma

Considering the application launch:

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

      

how would i check the value DEBUG

?

When trying with:

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

      

I just get

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

      

+3


source to share


2 answers


Make sure it is created in the right place. In this case, beforeEach

it was not started to load the module because it DEBUG

was inject()

ed in a block describe

, not a block it

. The following works correctly:



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

      

+4


source


An easy way to inject your existing constants into your karma tests.



// Assuming your constant already exists
angular.module('app').constant('STACK', 'overflow')...

// Your Karma Test Suite
describe('app', function() {
    var STACK;

    beforeEach(module('APP'));

    beforeEach(inject(function ($injector) {
        STACK = $injector.get('STACK');
    }));

    // Tests...
});

      

+3


source







All Articles