Немного тестирующего новичка здесь, я пытаюсь написать некоторые тесты Jasmine/Karma для контроллера. Мне дали образец теста для работы и сборки, и здесь в аргументе для функции блока it
был передан $controller
. Это приводит к тому, что тест проходит нормально.
Я успешно написал тесты для другого контроллера для этого приложения, и я не видел $controller
, когда-либо проходившего там. Поэтому я стараюсь следить за тем, что знаю, но в тот момент, когда я удаляю $controller
, тест терпит неудачу, потому что он ищет зависимости (которые я должен давать через $provide.value
в ...?).
Вот код контроллера -
(function() {
'use strict';
angular
.module('myApp')
.controller('EntryAddController', EntryAddController);
function EntryAddController($scope, $state, moment, $sanitize, dogList, catList, months, frequencies, EntryFactory, $modal, toastr, $log) {
var vm = this;
var now = moment();
var tomorrow = now.add(1, 'days').toDate();
var to = now.subtract(1, 'days').add(12, 'months').toDate();
vm.fromDay = tomorrow;
vm.minDay = tomorrow;
start();
function start() {
//some logic here
}
})();
Вот пример кода, я получил (обратите внимание на it
блок) -
(function() {
'use strict';
describe('Entry Add Controller', function(){
describe('EntryAddController', function() {
var vm, $rootScope, $controller;
beforeEach(module('myApp'));
beforeEach(function() {
inject(function(_$rootScope_, _$controller_) {
$rootScope = _$rootScope_;
$controller = _$controller_;
});
});
describe('EntryAddController', function() {
var $scope;
beforeEach(function createChildScopeForTheTest() {
$scope = $rootScope.$new();
});
afterEach(function disposeOfCreatedChildScope() {
$scope.$destroy();
});
it('expects fromDate and toDate to be defined', function($controller) {
vm = $controller('EntryAddController', { $scope: $scope });
expect(vm.fromDay).toBeDefined();
});
});
});
});
})();
Так почему же, когда я удаляю $controller
от аргумента функция в блоке it
, это вызывает эту ошибку?
Error: [$injector:unpr] Unknown provider: dogListProvider <- dogList <- EntryAddController
В чем разница между этими двумя версиями it
блока?
it('expects fromDate and toDate to be defined', function($controller) {
vm = $controller('EntryAddController', { $scope: $scope });
expect(vm.fromDay).toBeDefined();
});
против
it('expects fromDay to be defined', function() {
vm = $controller('EntryAddController', { $scope: $scope });
expect(vm.fromDay).toBeDefined();
});
Спасибо! Я подумал, что это так, но не был на 100% уверен. – cssun25