Я новичок в Jasmine и Karma.
Я тестирую приложение AngularJS, в котором мне нужно запускать функцию при изменении переключателя.
Это это мой компонент: <form-wrapper></form-wrapper>
<div id="form">
<div id="car-type">
<input type="radio" ng-model="$ctrl.carType" ng-change="$ctrl.onTypeChange()" name="carType"
ng-value="true"/>
<span class="label">Honda</span>
<input type="radio" ng-model="$ctrl.carType" ng-change="$ctrl.onTypeChange()" name="carType"
ng-value="false"/>
<span class="label">Mazda</span>
</div>
</div>
А мой тестовый файл выглядит так:
describe('form wrapper test', function () {
var $compile, $rootScope, $scope;
var element;
var formWrapperController, wrapperForm;
beforeEach(inject(function (_$compile_, _$rootScope_, _$componentController_) {
$compile = _$compile_;
$rootScope = _$rootScope_;
$componentController = _$componentController_;
$scope = $rootScope.$new();
}));
describe('In Wrapper Page', function() {
beforeEach(inject(function () {
$scope = $rootScope.$new();
element = angular.element("<form><form-wrapper></form-wrapper></form>");
element = $compile(element)($scope);
$scope.$digest();
formWrapperController = $componentController('formWrapper', {
'$element': element
}, {
options: {}
});
$rootScope.$apply();
}));
it('change radio button triggered', function () {
$rootScope.$apply();
wrapperForm = element[0].querySelector('#form');
//Returns both the radio inputs
var radioButtons = wrapperForm.querySelectorAll('#car-type [type=radio]');
expect(angular.element(radioButtons)).toBeDefined();
});
});
});
Как мне вызвать функцию $ ctrl.onTypeChange (), определенную в ng-change, и проверить, запускается ли она? (Когда я перехожу с Honda на Mazda или наоборот)
К вашему сведению, onTypeChange () - это функция, определенная в моем контроллере.
Кто-нибудь может мне помочь? Был бы признателен. Заранее спасибо!