Как вызвать ng-change, когда радиокнопка изменена с помощью Jasmine + Karma в AngularJS 1.x? - PullRequest
0 голосов
/ 20 июня 2020

Я новичок в 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 () - это функция, определенная в моем контроллере.

Кто-нибудь может мне помочь? Был бы признателен. Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...