私は、単純なクリックハンドラを書いているとイベントが呼び出されます、私は期待して機能をスパイするために何かを持っている私のジャスミンの仕様で現在jasmineを使ってクリックするとスパイがアサートされます。
Thing = function($){
var MyObject = function(opts){
this.opts = opts;
};
MyObject.prototype.createSomething = function(){
var that = this;
$('#some_dom_element').live('click', function(e) {
that.doStuff(e);
});
};
MyObject.prototype.doStuff = function(e) {
//do some javascript stuff ...
e.preventDefault();
};
return MyObject;
}(jQuery);
(そのような)に渡される必要があります(それはだから私の主張をargs-せずに電子の-notと呼ば
it ("live click handler added to the dom element", function(){
var doSpy = spyOn(sut, 'doStuff');
sut.createSomething();
$("#some_dom_element").trigger('click');
expect(doSpy).toHaveBeenCalledWith();
});
がどのように私は、この「toHaveBeenCalledWith」私は期待通りに動作するように修正することができます)失敗していますか?
UPDATE
ですが、私はほんの少しそれを変更することができましたし、以下の私の100%実施例であると、私は受け入れ答えを動作させることができなかった
it ("should prevent default on click", function(){
var event = {
type: 'click',
preventDefault: function() {}
};
var preventDefaultSpy = spyOn(event, 'preventDefault');
sut.createSomething();
$("#some_dom_element").trigger(event);
expect(preventDefaultSpy).toHaveBeenCalledWith();
});