1
我發佈了這些仍然使用PrototypeJS並且想要使用jasmine和jasmine-prototype插件測試自定義事件。使用茉莉花測試原型自定義事件
我們根據用戶點擊或表單提交來觸發自定義事件。我們想要一個簡單的方法來測試自定義事件是否正確觸發。
下面是一個例子:
var CustomEventsDispatcher = (function() {
function init(){
//if elements exists
if($$('a.trigger_bomb')) {
// Observe the elements
$$(elements).each(function(element) {
element.observe('click', function(e) {
this.fire("bomb:explode", {})
});
});
}
return {'init' : init};
})();
使用網絡上可用的資源,我創建了一個夾具...
// spec/fixtures/links.html
<a class="trigger_bomb" href="#"> Trigger Bomb </a>
...和測試套件:
//spec/trigger_bomb_spec.js
describe("Trigger Bombs", function() {
beforeEach(function(){
loadFixtures("links.html")
CustomEventsDispatcher.init();
})
it("should raise the custom event", function(){
var element=$$('a.trigger_bomb').first();
spyOnEvent(element, 'click');
element.click();
expect('click').toHaveBeenTriggeredOn(element);
expect('bomb:explode').toHaveBeenTriggeredOn(element);
});
});
第一個斷言正常,但不是第二個。原因是spyOnEvent
改變了點擊事件在element
上的處理方式。
有很多開發者仍然使用PrototypeJS。感謝您的信息! –