javascript - anchor 元素的路径名在 Rhino 中使用 env.js 返回未定义

标签 javascript unit-testing angularjs rhino envjs

我遇到了an issue我相信这源于 Rhino 中 anchor 标记的实现。虽然我正在使用env.js ,我怀疑我可能没有正确配置某些东西。

特别是,当我尝试针对为 angularjs 应用程序编写的代码编写单元测试时,会出现我的问题。当我包含 angular.js (目前的版本 1.2.1)时,我收到以下错误:

类型错误:无法调用未定义的方法“charAt”

我确信该错误是 this call 的结果到 urlParsingNode.pathname,因为 console.log 调用显示 pathname 对象未定义。

我将 urlParsingNode 的实例化追踪到 this line我们看到它是调用 document.createElement("a"); 的结果。 再往下,我们看到他们在 this line 中设置了 href 属性。希望创建的 anchor 标记能够利用浏览器正确解析URL。

我必须相信我不是第一个尝试通过 Rhino 对 Angular 进行 JS 单元测试的人,但到目前为止我还没有成功在 Google 上找到解决方案。任何提示将不胜感激。

最佳答案

找到它并修复它。 env.js 中的 HTMLAnchorElementpathname getter/setter 根本没有定义。

我提交了a pull request ,但不幸的是该项目看起来几乎被放弃了。我也不知道如何将其构建为单个文件。看起来也许有人自己将其分解为 require.js 模块。对于我的用例来说,这不是一场值得战斗的战斗。

因此,对于遇到此问题的其他人,我在下面提供了您需要的代码。它属于 HTMLAnchorElement.prototype。在我的 env.js 1.2 副本中,此原型(prototype)从第 8075 行开始。我在第 8118 行添加了以下内容。

get pathname() {
  var uri = Envjs.urlsplit(this.href);
  return uri.path;
},
set pathname(val) {
  var uri = Envjs.urlsplit(this.href);
  uri.path = val
  this.href(uri.urlunsplit(uri));
},

仅供引用,我的特定问题已通过 this pull request 解决.

关于javascript - anchor 元素的路径名在 Rhino 中使用 env.js 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21028520/

相关文章:

javascript - 我怎样才能禁用事件监听器?或者有一个停止按钮来实现它的功能?

javascript - 在多个地方使用 javascript 为相同的元素 id 更改 CSS 元素

javascript - Uncaught TypeError : data. 推送不是函数

c# - 将 C# 字节属性硬编码到模型中

c# - C# 和 HTML 之间的 POST&GET

Android:使用ActivityInstrumentationTestCase2进行测试时如何获取上下文?

java - 如何使用junit模拟调用单例类的类

google-app-engine - 寻找一种使用ajax使用angularjs将文件上传到应用程序引擎的方法

javascript - 如何从 .t​​hen 返回 promise

javascript - PhoneGap 的 JSON 加载问题