1
저는 Mocha와 Sinon을 사용하여 초기화시 버튼에 클릭 이벤트 리스너가 추가되었는지 테스트하고 있습니다. click 이벤트는 테스트의 버튼에서 트리거되지만 스파이는이를보고 있지 않습니다.Sinon Spy가 클릭 이벤트를 catch하지 않습니다.
또한 테스트 내에서 클릭 이벤트 리스너를 첨부 할 수 있습니다. 스파이가이를 catch하지만 이벤트는 두 번 발생합니다.
그래서 나는 main.myMethod에 대한 올바른 참조에 액세스하는 참조 문제를 추측하고 있습니다.
누구나 내가이 작업을하기 위해 무엇을해야하는지 알 수 있습니까?
var main = (function() {
function init() {
$("#btnGo").on('click', myMethod);
}
function myMethod() {
console.log("myMethod() was called");
return true;
}
init();
return {
init: init,
myMethod: myMethod
}
})();
if (typeof module !== "undefined" && module.exports !== null) {
module.exports = main;
}
/*Test*/
var expect = require("chai").expect;
var sinon = require('sinon');
var jsdom = require("jsdom");
global.document = jsdom.jsdom('<body></body>');
global.window = document.defaultView;
before(() => {
$ = require("jquery");
global.$ = $;
});
describe("Main.init()", function() {
it("should attach a click event listener to the button.", function() {
$("body").html("<button id='btnGo'>Go</button>");
var main = require("../src/main.js"),
spy = sinon.spy(main, "myMethod");
$('#btnGo').trigger("click");
sinon.assert.called(spy);
});
});
감사하지만 단순히 방법을 감시 할 수 있어야 해결 방법처럼 들린다. 나는 main.myMethod 메쏘드를 main.myMethod = function() {}으로 대체함으로써 간단한 스텁을 시도하기까지했다. 그러나 아직도 기쁨이 없습니다 - 어딘가에 떠있는 다른 참조가 있어야합니다 ... – whatever