jQuery Jasmine click事件:预期事件[object]已在[object]上触发
我有一个小测试(Jasmine+Jasmine jquery)来检查btn是否被点击,并测试其回调是否正确执行,但我面临一些奇怪的错误: 以下是测试: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"); });
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');
});