との結合をクリックしてください:私は一緒にノックアウト・テンプレートとジャスミンのテストで問題を抱えているジャスミン
HTMLは次のようになります。
<body>
<my-widget params="value: $data></my-widget>
</body>
ウィジェットは、クリック結合を持っています
ko.components.register('my-widget', {
viewModel : function(params) {
this.doSomething = function() {
// doing something
};
},
template: {
require: 'text!../../templates/my-widget.html'
}
});
:
<div class="my-widget">
<a id="#clickme" data-bind="click: doSomething">Click me</a>
</div>
ウィジェットはJavaScriptがこのようなものです
これはすべて完全に動作しますが、Jasmine/Jqueryでは$( '#clickme')をクリックするとdoSomethingは実行されません。私はそれが存在していることがわかります#clickme要素をconsole.loggingとき
beforeEach(function (done) {
require(['specHelpers', 'knockout'],
function (specHelpers, knockout) {
specHelpers.loadFixtureIntoPage("page.html", "myPage"); // template and id to use
expect($('#myPage')).toExist();
done();
});
});
it("WILL NOT TRIGGER MY CLICK", function (done) {
ko.applyBindings(myPage.pageViewModel, $('#myPage'))[0]);
setTimeout(function() {
$('#clickme').click();
// doSomething is not called :(
done();
}, 300);
});
:
次は私のジャスミンテスト(それが大幅に簡素化されていますが、必需品が含まれている必要があります)からの抜粋です。
ウィジェットのクリックバインドが適切に適用されないようです。しかし、私はbddでテストを実行し、それが終わって失敗しました - 私は手動でこの要素をクリックし、doSomethingが呼び出されます。
私は間違っていますか?私が言ったように、実際のアプリケーションの実行は完全に機能します。 jasmineはクリックバインドを正しく処理できないようです - 私はdocument.readyに設定されている通常のクリックイベントにこの問題はありません。
あなたの問題を再現しようとしましたが、できませんでした.. https://jsfiddle.net/9qb1936v/私は何を欠席しましたか? – user3297291
問題は、フィクスチャ、すなわちノックアウトウィジェットを含むHTMLが動的にロードされるジャスミン仕様で動作しているときに発生します。 –