如何有效地测试这个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()
?退房: