私はカルマでjs-fixture、モカ、チャイ、シノンを使用しています。
ラッパーで正しい要素を確認できます。
ただし、クリックイベントをトリガーすると、クリックイベントはトリガーされません。
イベントが要素にバインドされることはないと想定しています。
備品に何か問題がありますか?モカでjQueryイベントをテストするより良い方法はありますか?
テスト:
var thisFixture,
wrapper;
describe("modal is removed when close button is clicked", function () {
beforeEach(function () {
fixtures.path = "/base/spec/javascripts/fixtures";
fixtures.load('modal.html');
thisFixture = $(fixtures.body());
wrapper = $(thisFixture[0]);
});
it("should is removed from the dom", function () {
debugger;
h2uModal.bindEvents();
var close = wrapper.find(".fa-times");
expect(wrapper.size()).to.equal(1);
close.trigger("click");
expect(wrapper.size()).to.equal(0);
});
afterEach(function () {
fixtures.cleanUp();
});
});
テスト中のコード:
var h2uModal = {
bindEvents: function () {
$("#modal .fa-times").click(function () {
$(this).parents("#wrapper").remove();
});
}
};
フィクスチャ:
<div id='wrapper'>
<div id='modal'>
<i class='fa-times'></i>
</div>
</div>
結果:
Chrome 34.0.1847 (Mac OS X 10.9.2) modal is removed when close button is clicked should is removed from the dom FAILED
AssertionError: expected 1 to equal 0