Question

J'ai une application Angular (exécutée à partir d'un projet ASP.NET MVC.)

Dans cette application, j'ai une directive avec la fonction de lien suivante :

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

    }

J'ai écrit ce test :

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);
    });

Si je l'exécute dans le navigateur en utilisant Jasmine, le test réussit.

Si je le lance avec chutzpah à l’intérieur de l’idée, cela échoue.Il ne déclenche jamais le click événement.

Y a-t-il quelque chose qui me manque ?

Était-ce utile?

La solution

Dans mon cas, il s’agissait d’une erreur stupide de l’utilisateur.

Mon fichier de lanceur de test Jasmine exécuté à partir du navigateur avait jquery, puis angulairement référencé.

Mon fichier chutzpah.json avait l'ordre inverse.

J'ai déplacé la référence jquery et elle a commencé à fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top