Pergunta

Eu tenho um aplicativo Angular (executando a partir de um projeto ASP.NET MVC).

Neste aplicativo, tenho uma diretiva com a seguinte função de link:

    link: function (scope, element, attrs, formCtrl) {
        element.bind('click', function (event) {
            formCtrl.$setPristine();
        });

    }

Eu escrevi este teste:

var $compile,
        $rootScope,
        form;

    beforeEach(module('points'));

    beforeEach(inject(function(_$compile_, _$rootScope_, testHelper){
        $compile = _$compile_;
        $rootScope = _$rootScope_;
        testHelper.expectBaseRoute();
    }));

    it('Should set form to pristine when clicked', function () {
        var scope = $rootScope;

        form = $compile('<form name="testForm" unsaved-warning-clear><input name="test" ng-model="value"/></form>')(scope);
        scope.value = "abc";
        scope.$digest();

        scope.testForm.test.$setViewValue('def');

        expect(scope.testForm.$pristine).toBe(false);

        $(form).trigger('click');

        expect(scope.testForm.$pristine).toBe(true);
    });

Se eu executar isso no navegador usando Jasmine, o teste será aprovado.

Se eu executá-lo com chutzpah dentro do ide, ele falha.Nunca dispara o click evento.

Tem algo que estou perdendo?

Foi útil?

Solução

No meu caso, foi um incidente de erro estúpido do usuário.

Meu arquivo do executor de teste Jasmine sendo executado no navegador tinha jquery e, em seguida, referência angular.

Meu arquivo chutzpah.json estava na ordem inversa.

Mudei a referência do jquery e ela começou a funcionar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top