Jasmine AngularJS test (passes in karma start configs/karma.conf.js)
describe('IndexController', function () {
beforeEach(module('myApp'));
var ctrl, scope;
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
ctrl = $controller('IndexController', {
$scope: scope
});
}));
it('should add name parameter to scope', function () {
expect(scope.name).toBeDefined();
});
});
Contents of controllers.js
var myApp = angular.module('myApp', []);
myApp.controller('IndexController', function ($scope) {
$scope.name = 'bob';
});
Output of: jasmine-node test/ --junitreport
Message:
TypeError: object is not a function
Stacktrace:
TypeError: object is not a function
at null.<anonymous> (/tmp/tests/test/unit/controllerSpec.js:38:16)
at Object.<anonymous> (/tmp/tests/test/unit/controllerSpec.js:36:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
beforeEach()taks in a function. Be suremodule('myApp')andinject(...)are returning actual function definitions. Jasmine's beforeEach is like "call the passed function before each test", so you may want:I am unfamiliar with karma, but do use jasmine's
done()method in mybeforeEach()like this:Not using that
done()call breaks my tests because I'm doing a few asynchronous call in there (perhaps Jasmine is not waiting for beforeEach to finish?).