2015-04-02 5 views
2

Я должен настроить автономное тестирование жасмина. Я считаю, что все правильно настроено. Когда я бегу мой первый тест:

describe('Logon Controller', function() { 
    var controller, $scope; 

    beforeEach(module("app")); 

    //beforeEach(inject(function ($rootScope, $controller) { 
    // scope = $rootScope.$new(); 
    // contoller = $controller('logonCtrl', { 
    //  $scope: scope 
    // }); 
    //})); 

    beforeEach(inject(function ($rootScope) { 
     scope = $rootScope.$new(); 
    })); 

    //it('should say hello', function ($controller, $rootScope) { 
    // //var scope = $rootScope.$new(); 
    // var controller = $controller('logonCtrl', { $scope: $scope }); 
    // //expect(angular.isFunction(scope.get)).toEqual("Hello There :)"); 
    // expect(scope.Hello()).toEqual("Hello There :)"); 
    // expect($scope.Hello).toBeDefined(); 
    //}); 

    it('should say hello', inject(function ($controller, $rootScope) { 
     //var scope = $rootScope.$new(); 
     var controller = $controller('logonCtrl', {$scope: $scope}); 
     //expect(angular.isFunction(scope.get)).toEqual("Hello There :)"); 
     //expect(scope.Hello()).toEqual("Hello There :)"); 
     expect($scope.Hello).toBeDefined(); 
    })); 

}); 

Я получаю сообщение об ошибке: Ошибка: [$ Инжектор: modulerr]? http://errors.angularjs.org/1.3.11/ $ форсунка/modulerr p0 = приложение .............

Вот моя конфигурация модуля приложения.

var app = angular.module('app', ['ui.router','ngMaterial']); 

Вот мой контроллер:

app.controller('logonCtrl', ['$scope', '$state', '$interval', function ($scope, $state, $interval) { 
    $scope.hello = function() {}; 
}); 
]); 

Я использую автономную версию жасмин 2.2.0. Я понятия не имею, в чем проблема, все, что я сделал, довольно элементарно. Любая помощь будет очень высоко ценится.

UPDATE: вот что выглядит мой SpecRunner.html как:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>Jasmine Spec Runner v2.2.0</title> 
 

 
    <link rel="shortcut icon" type="image/png" href="JasmineUnitTest/lib/jasmine-2.2.0/jasmine_favicon.png"> 
 
    <link rel="stylesheet" href="JasmineUnitTest/lib/jasmine-2.2.0/jasmine.css"> 
 

 
    <script type="text/javascript" src="JasmineUnitTest/lib/jasmine-2.2.0/jasmine.js"></script> 
 
    <script type="text/javascript" src="JasmineUnitTest/lib/jasmine-2.2.0/jasmine-html.js"></script> 
 
    <script type="text/javascript" src="JasmineUnitTest/lib/jasmine-2.2.0/boot.js"></script> 
 
    <script type="text/javascript" src="JasmineUnitTest/lib/jasmine-2.2.0/angular.min.js"></script> 
 
    <script type="text/javascript" src="JasmineUnitTest/lib/jasmine-2.2.0/angular-mocks.js"></script> 
 

 
    <!-- include source files here... --> 
 
    <script type="text/javascript" src="js/controllers/logonCtrl.js"></script>  
 

 
    <!-- include spec files here... --> 
 
    <script type="text/javascript" src="JasmineUnitTest/specs/logonController-spec.js"></script> 
 
    
 
</head> 
 

 
<body> 
 
</body> 
 
</html>

+0

Часть 'beforeEach (function ($ rootScope) { scope = $ rootScope. $ New(); }));' должен иметь '$ scope' не' scope'. Это опечатка? – Chandermani

+0

Это не опечатка, я был в предположении, что вы можете создать переменную, содержащую новый экземпляр $ rootScope, я бы не назвал переменную имя переменной. Я дам этот выстрел, и я вам это знаю, что помогает. Благодаря! –

+0

Я все еще получаю ту же ошибку :(и это была опечатка, я заметил, что я объявил эту переменную как «$ scope» lol. –

ответ

2

Похоже, что $injector не может найти некоторые из ваших зависимостей. Вы уверены, что скрипт, содержащий ваш контроллер, правильно загружен?

+0

Вот что меня немного беспокоит. как вы можете определить правильность загрузки контроллера. При развертывании приложения нет никаких проблем, ни у кого из них я не сталкивался. –

+0

Возможно, это файл js, который неправильно загружен в тесте. Является ли ваш контроллер в отдельном файле? –

+0

Да, мой контроллер находится в отдельном файле. В консоли для браузера dev tools (firebug) он не может найти мой контроллер js-файла. Однако я понятия не имею, почему. –

Смежные вопросы