jQuery Jasmine click事件:预期事件[object]已在[object]上触发

jQuery Jasmine click事件:预期事件[object]已在[object]上触发,jquery,jasmine,jasmine-jquery,Jquery,Jasmine,Jasmine Jquery,我有一个小测试(Jasmine+Jasmine jquery)来检查btn是否被点击,并测试其回调是否正确执行,但我面临一些奇怪的错误: 以下是测试: it("Check if pagination arrows/btns had been clicked", function() { // beforeEach to spy on callbacks: beforeEach(function() { spyOn(comp, "_pageUp"); });

我有一个小测试(Jasmine+Jasmine jquery)来检查btn是否被点击,并测试其回调是否正确执行,但我面临一些奇怪的错误:

以下是测试:

it("Check if pagination arrows/btns had been clicked", function() {
    // beforeEach to spy on callbacks:
    beforeEach(function() {
        spyOn(comp, "_pageUp");
    });

    var arrowUp = $('.arrow-up').eq(0);
    var spyEvent = spyOnEvent(arrowUp, 'click');

    // Trigger the event:
    $(arrowUp).click();

    expect('click').toHaveBeenTriggeredOn(arrowUp);
    expect(spyEvent).toHaveBeenTriggered();

    // Check if the click callback was correctly called:
    expect(comp._pageUp).toHaveBeenCalled();

});
comp
变量是一个JS对象。我想要的是,当它的
$('.arrow up').eq(0)按钮”,调用_pageUp方法。然后,对这些方法进行测试(comp.\u pageUp()
comp.\u pageDown()

我收到的错误消息是:

    Expected event [object Object] to have been triggered on [object Object]
还有,最后一个提醒:我非常确定夹具已正确加载,并且测试在window.onload事件之后运行

有人能帮我理解我做错了什么吗

谢谢各位。

各位

如前所述,主要问题是关于原型方法

因此,修复了一些错误和spyOn原型声明,对我有效的是:

it("OverlayNavComponent pagination btn had been clicked", function() {
    // spyOn prototype BEFORE instantiate the component:
    spyOn(OverlayNavComponent.prototype, "_pageUp");
    var comp = new OverlayNavComponent();
    comp.init($("#scroll-up-icon"), $("#btn-toggle-menu"), 4);

    var btnId = "#scroll-up-icon";

    // spyOnEvent gets the query string and NOT the element itself as I was doing before:
    var spyEvent = spyOnEvent(btnId, "click");
    // Note: $(btnId).click() did not work:
    $(btnId).trigger("click");

    expect('click').toHaveBeenTriggeredOn(btnId);
    expect(spyEvent).toHaveBeenTriggered();
    expect(comp._pageUp).toHaveBeenCalled();
});
此外,我还必须在“beforeach”方法中加载夹具:

现在,所有的测试都正常了

beforeEach(function() {
    jasmine.getFixtures().fixturesPath = "/fixtures";
    loadFixtures('overlaynavcomp.html');
});