سؤال

لدي تطبيق Angular (يعمل من مشروع ASP.NET MVC.)

في هذا التطبيق، لدي توجيه مع وظيفة الارتباط التالية:

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

    }

لقد كتبت هذا الاختبار:

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

إذا قمت بتشغيل ذلك في المتصفح باستخدام ياسمين، سينجح الاختبار.

إذا قمت بتشغيله مع chutzpah داخل بيئة تطوير متكاملة، فإنه يفشل.لا يطلق النار أبدًا click حدث.

هل هناك شيء أفتقده؟

هل كانت مفيدة؟

المحلول

بالنسبة لحالتي، كان ذلك حادث خطأ غبي من قبل المستخدم.

ملف تشغيل اختبار Jasmine الخاص بي الذي يتم تشغيله من المتصفح يحتوي على jquery، ثم تمت الإشارة إليه بزاوي.

كان ملف chutzpah.json الخاص بي بترتيب عكسي.

لقد قمت بنقل مرجع jquery لأعلى وبدأ العمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top