3
votes

I'm trying a very simple test with Karma/Jasmine, to unit test my AngularJS app. This seems to work

beforeEach(
        module('myApp')
);

it('should blah', function () {
    expect(true).toBe(true);
});

while this doesnt

beforeEach(
    function () {
        module('myApp')
    }
);

it('should blah', function () {
    expect(true).toBe(true);
});

I want to be able to do other stuff beforeEach test suite, but it's not giving me any meaningful errors to be able to debug it, the only one I see is

TypeError: 'undefined' is not an object (evaluating 'currentSpec.queue.running')

relating to the line where the function is called within the beforeEach construct in the second example.

Im hoping someone else has come across this and can assist?

Thanks Stephen

1
I imagine that calling module(..) returns something meaningful and function(){ module(..); } return this function (as an argument to beforeEach( arg )) Even calling that function doesnt return anything. - EricG
Can't you call beforeEach several times, can you? - chr1s1202

1 Answers

5
votes

Thats just how you declare your module. If you want to do more you can just use an additional beforeEach.

For Example:

var scope;
var ctrl;
var mysvcMock;

beforeEach(module('myApp'));

beforeEach(function() {
    mysvcMock = {

    };
});

beforeEach(inject(function($rootScope, $controller) {
    scope = $rootScope.$new();
    ctrl = $controller('MyController', {
        $scope: scope,
        mysvc: mysvcMock
    });
}));

//it checks

Let me know if you need more clarity on this and I can put together a fiddle for you.

Thanks,

Jordan