首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在茉莉花中测试靶场对象?

如何在茉莉花中测试靶场对象?
EN

Stack Overflow用户
提问于 2013-08-31 04:10:18
回答 1查看 2.3K关注 0票数 1

我正在写一个关于靶场物体的测试。我的代码类似于下面的代码。

代码语言:javascript
复制
Test = function () {};

Test.prototype.test = function () {
  if (window.getSelection) {
    var sel = window.getSelection();
    var range = sel.getRangeAt(0);
    // then some code;
  } else if (document.selection) {
    range = document.selection.createRange();
    //then some code;
  return 'haha';
}

it('should create range object', function () {
  var myTest, result;
  myTest = new Test();
  spyOn(myTest, 'test').andReturn('haha');
  result = myTest.test();
  expect(result).toEqual('haha');      
});

当我运行测试时,它会抛出一个错误:INDEX_SIZE_ERR: INDEX_SIZE_ERR: DOM Exception 1

但是我的代码在浏览器中运行得很好。

然后我发现了一些关于getRangeAtrangeCount的东西。

在用户单击新加载的页面之前,rangeCount为0。

然后我尝试添加像$(document).click();这样的代码,rangeCount仍然是0.

它仍然抛出INDEX_SIZE_ERR: INDEX_SIZE_ERR: DOM Exception 1

因此,问题是:我通常如何测试茉莉花中的范围对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-31 14:21:52

您必须模拟window.getSelectiondocument.selection.createRange,这样才不会调用原始方法。

代码语言:javascript
复制
it('should create range object', function () {
  var myTest, result;
  myTest = new Test();
  //mock the select function so that it will return "haha" when getRangeAt is called
  var range = 'haha';
  var rangeObject = {
    getRangeAt: function(){return range}
  };
  spyOn(window, 'getSelection').andReturn(rangeObject)
  spyOn(myTest, 'test').andReturn('haha');
  result = myTest.test();
  expect(result).toEqual('haha');      
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18544384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档