如何有效地测试这个JavaScript?
我已经编写了一段代码,用于处理用户在页面上突出显示某些文本的事件。代码运行良好(如下),但我的问题是如何有效地测试它?有没有一种方法可以模仿用户选择文本(特别是涉及如何有效地测试这个JavaScript?,javascript,jquery,testing,bdd,jasmine,Javascript,Jquery,Testing,Bdd,Jasmine,我已经编写了一段代码,用于处理用户在页面上突出显示某些文本的事件。代码运行良好(如下),但我的问题是如何有效地测试它?有没有一种方法可以模仿用户选择文本(特别是涉及mouseup事件) 可能问题在于,在发生mouseup事件时检查是否选择了文本不是最好的方法?任何见解都值得赞赏 var note = { mouseHandler : function(e){ selection = window.getSelection(); if (selection.toString
mouseup
事件)
可能问题在于,在发生mouseup
事件时检查是否选择了文本不是最好的方法?任何见解都值得赞赏
var note = {
mouseHandler : function(e){
selection = window.getSelection();
if (selection.toString() !== '') {
note.selection = selection;
note.setAttributes();
note.hideOverlay();
note.placeOverlay();
}
}
}
理想情况下,我希望能够使用测试代码触发此操作,以便确保
note.placeOverlay()
发生因此在Jasmine中,您可以监视窗口.getSelection
并在一种情况下返回字符串,在另一种情况下不返回任何字符串。然后您将检查note.placeOver
中应该发生的事情是否发生了
spyOn(window, 'getSelection').andReturn('someString')
note.mouseHandler();
//test what you expect here
spyOn(window, 'getSelection').andReturn('')
note.mouseHandler();
//test that nothings happens here
也许你可以展示一下note.placeOver的功能,这样我就可以完成答案。一个非常基本的方法是在回调函数
note.placeOverlay()
的末尾执行一个简单的alert()
,或者使用console.log('placeOverlay()已执行')
;我想用代码自动触发事件,以便进行自动测试。布莱恩:不是真的,它不能解决由mouseup
触发事件的问题。你能不能在元素上调用.mouseup()
?退房: