TypeError: module is not a function AngularJS & Jasmine
23,299
You need to include angular-mocks.js
after Jasmine otherwise functions like module
or inject
will not be defined.
Moreover you redefine module
:
var module = angular.module('AngularSampleApp', []);
So either you rename the variable or put the code inside an IIFE.
Comments
-
Teoman shipahi over 3 years
In my sample app have I test runner like this
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <!--angular--> <script src="../../../Scripts/angular.min.js"></script> <!--jasmine--> <img src="../../../Content/jasmine/jasmine_favicon.png" /> <link href="../../../Content/jasmine/jasmine.css" rel="stylesheet" /> <script src="../../../Scripts/jasmine/jasmine.js"></script> <script src="../../../Scripts/jasmine/jasmine-html.js"></script> <script src="../../../Scripts/jasmine/boot.js"></script> <!--angular mocks--> <script src="../../../Scripts/angular-mocks.js"></script> <!--app tests--> <script src="../../FavoritesController.js"></script> <script src="FavoritesController.Tests.js"></script> </body> </html>
FavoritesController:
var module = angular.module('AngularSampleApp', []); var FavoritesController = module.controller('FavoritesController', function favoritesController($scope) { $scope.phones = [ { 'name': 'Nexus S', 'snippet': 'Fast just got faster with Nexus S.' }, { 'name': 'Motorola XOOM™ with Wi-Fi', 'snippet': 'The Next, Next Generation tablet.' }, { 'name': 'MOTOROLA XOOM™', 'snippet': 'The Next, Next Generation tablet.' } ]; });
FavoritesController.Tests.js
describe('FavoritesController', function () { beforeEach(module('AngularSampleApp')); it('should create "phones" model with 3 phones', inject(function ($controller) { var scope = {}, ctrl = $controller('FavoritesController', { $scope: scope }); expect(scope.phones.length).toBe(3); })); });
But I am getting:
TypeError: module is not a function
error after I run my tests. Am I missing something?