Я использую жасмин, чтобы написать единичный тест для контроллера, где я должен проверить, работает ли функция на $scope.$watch
. Я использую синтаксис 'controller as'
, но я создал $scope
, чтобы создать наблюдателя. Тем не менее, мой тест бросает расплывчатое исключение на $scope.$apply()
. Вот мой контроллер:Возможно необработанное отбракование в тесте блока кармы
OrderController.$inject = ['Order', 'cart',
'$mdDialog', '$state', '$rootScope', '$scope'];
function OrderController(Order, cart, $mdDialog, $state, $rootScope, $scope) {
var vm = this;
vm.order = new Order({
name: '',
phone: '',
address: ''
});
vm.order.items = [];
vm.promoCode = '';
vm.order.promo_code = false;
$scope.$watch('vm.promoCode', function() {
if (vm.promoCode && vm.promoCode == 'm7e17')) {
vm.order.promo_code = true;
}
}); }
А вот мой тест:
describe('Order Controller', function() {
var OrderController, CartService, $scope;
var item = {};
beforeEach(angular.mock.module('app'));
beforeEach(angular.mock.module('app.services'));
beforeEach(inject(function ($controller, _$rootScope_, _cart_, $state, $mdDialog) {
$scope = _$rootScope_.$new();
CartService = _cart_;
CartService.add(item);
OrderController = $controller('OrderController',
{
$scope: $scope,
$rootScope: _$rootScope_,
cart: CartService,
$state: $state,
$mdDialog: $mdDialog
}
);
}));
it('Should save a boolean whether a promo code has been entered', function() {
expect(OrderController.order.promo_code).toBe(false);
OrderController.promoCode = 'm7e17';
$scope.$apply();
expect(OrderController.order.promo_code).toBe(true);
}); });
Однако, когда я называю $scope.$apply
внутри моей спецификации, он выдает ошибку: 'Possibly unhandled rejection: ru thrown'
. Не мог найти ничего об этом в Интернете, так что я тут делаю неправильно? У меня также есть другие тесты с использованием области, но они не терпят неудачу (хотя и не звонят $scope.$apply
), как это можно исправить?
AngularJS версии? – tasseKATT
@tasseKATT это угловая 1.5.9 –
Такая же ошибка, если вы удалите инъекцию '$ mdDialog' и' $ state' в контроллер? – tasseKATT