Я пытаюсь проверить (простую) директиву, которая проверяет текстовое поле, чтобы узнать, меньше ли введенное значение меньше значения переменной контроллера.Почему возникает ошибка «Неожиданный запрос» при тестировании угловой директивы без вызовов AJAX, связанных с ней?
Вот моя ошибка:
IE 11.0.0 (Windows 7) Maximum value validator should be valid initially FAILED
Error: Unexpected request: GET app/layout/shell.html
No more request expected
at $httpBackend (C:/Projects/myProj/myProj/scripts/angular-mocks.js:1218:5)
at sendReq (C:/Projects/myProj/myProj/scripts/angular.js:9462:9)
at serverRequest (C:/Projects/myProj/myProj/scripts/angular.js:9179:9)
at processQueue (C:/Projects/myProj/myProj/scripts/angular.js:12914:11)
at Anonymous function (C:/Projects/myProj/myProj/scripts/angular.js:12930:27)
at Scope.prototype.$eval (C:/Projects/myProj/myProj/scripts/angular.js:14123:9)
at Scope.prototype.$digest (C:/Projects/myProj/myProj/scripts/angular.js:13939:15)
at Anonymous function (C:/Projects/myProj/myProj.test/directiveTests.js:11:3)
at invoke (C:/Projects/myProj/myProj/scripts/angular.js:4152:7)
at workFn (C:/Projects/myProj/myProj/scripts/angular-mocks.js:2255:11)
Так озираясь это, кажется, связано с не настройки вызова AJAX. Кроме того, как вы можете видеть ниже, моя директива не имеет никаких связанных вызовов службы на нем. Плюс, почему, черт возьми, он пытается выполнить запрос GET для html-файла оболочки? Откуда это пришло?
Я только что написал несколько тестов, пока я только начинаю этот проект, но мои другие тесты работали нормально. Я использую Карму, если это может иметь значение. Я в тупике, потому что мои тесты похожи на примерные тесты, которые есть. Если я отлаживаю, все кажется замечательным в конце теста, но я получаю сообщение об ошибке после завершения теста, и тест не выполняется с этой ошибкой.
OK код время.
Моя директива:
(function() {
'use strict';
var app = angular.module('app');
app.directive('maxValue', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, ele, attrs, ctrl) {
ctrl.$parsers.unshift(function(value) {
var valid;
if (value) {
var maxValue = scope.$eval(attrs.maxValue);
valid = parseInt(value, 10) <= maxValue;
}
return valid ? valid : undefined;
});
}
};
});
})();
и мои тесты:
describe("Maximum value validator", function() {
var $scope, form;
beforeEach(module('app'));
beforeEach(inject(function($compile, $rootScope) {
var element = angular.element('<form name="form"><input type="text" name="value" ng-model="value" max-value="maxValue" /></form>');
$scope = $rootScope;
$scope.value = 0;
$scope.maxValue = 100;
$compile(element)($scope);
$scope.$digest();
}));
it('should be valid initially', function() {
expect($scope.form.value.$valid).toBe(true);
});
it('should be valid when value is the same as the max value', function() {
$scope.form.value.$setViewValue('100');
expect($scope.form.value.$valid).toBe(true);
});
it('should be invalid when the value is greater than the max value', function() {
$scope.form.value.$setViewValue('101');
expect($scope.form.value.$valid).toBe(false);
});
});
Пробовал это, получил: Module 'shell.html' недоступен! Вы либо ошибочно написали имя модуля, либо забыли загрузить его. Я полагаю, что я не понимаю, может ли приложение полагаться на него, чего я тоже не вижу, почему мои другие тесты работают нормально? Это что-то связано с компиляцией? Это единственная разница между этим тестом и другими. – rball
Не работает. :( – rball
Может быть связано с этим: http://stackoverflow.com/questions/27724956/ui-router-extras-breaks-my-unit-tests-with-unexpected-results-error, за исключением того, что у меня нет ui- router-extras, просто ui-router ... Я пробовал этот ответ, и он не работал. – rball