如何在jasmine中设置间谍jQuery选择器?

时间:2015-04-28 08:17:07

标签: jquery angularjs tdd jasmine

我想窥探jquery callin我的指令:

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

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

你知道如何正确设置间谍?

1 个答案:

答案 0 :(得分:2)

这很容易

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

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