如何在 jasmine 中设置对 jQuery 选择器的监视?

How to set spy on jQuery selector in jasmine?

我想监视 jquery 调用我的指令:

link: function postLink(scope, element) {
                $('.report-datepicker', element).datepicker();
}

我试过这个

 var datepickerSelector = '.report-datepicker';

    beforeEach(inject(function ($rootScope, $compile) {
         jQuerySpy = spyOn(window, '$');
        scope = $rootScope.$new();
        element = $compile(angular.element('<date-picker></date-picker>'))(scope);

    }));

    it('should be use correct selectors', function () {
        expect(jQuerySpy).toHaveBeenCalledWith(datepickerSelector, element);
    });

测试失败,因为从未调用过间谍程序。

你知道如何正确设置 spy on $ 吗?

相当简单

it('should be use correct selectors', function () {
  spyOn($.fn, "datepicker").andReturn("bar");
  var result = $('.report-datepicker', element).datepicker();
  expect(result).toEqual("bar");
});

您也可以尝试创建自定义间谍,使其更适合您的情况,但这个应该有效