使用Jasmine和node.js测试客户端javascript代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Jasmine和node.js测试客户端javascript代码相关的知识,希望对你有一定的参考价值。

给定:客户端javascript代码(在浏览器中运行,使用jquery等)。目前,代码使用Rhinoenvjs进行测试。我们想切换到node.js.然而,经过一些研究,找不到任何模仿浏览器的envjs式补充。

在“按原样”运行node.js时,甚至缺少像alert()window这样的基本功能。

是否有任何标准捆绑,类似Rhino & envjsnode.js请?

答案

您可以使用zombie.js,它具有测试所需的一切。或者您可以利用jsdom(zombie.js在内部使用)在node.js中获取DOM,并针对该DOM执行测试。

我还可以推荐testling,它在所有常见浏览器中根据您的规范执行测试 - 代码在实际浏览器中针对您的服务运行。

这是jsdom的一个简单示例:

var jsdom = require("jsdom");

jsdom.env(url, ["http://code.jquery.com/jquery.min.js"], function(err, window) {
    // jQuery is at window.$
});

您可以使用html文档或片段代替上面的url

您还可以加载页面并获取任何外部资源,而不是直接向jsdom提供jQuery等:

var jsdom = require("jsdom").jsdom,
    doc = jsdom(markup),
    window = doc.createWindow();

// Do your stuff on window, jsdom will have fetched all the scripts referenced in the markup

同样,zombie.js在内部使用jsdom,它可能是一个更好的起点。

另一答案

有两种选择

  1. 您的测试浏览器代码。在浏览器中运行它。模拟浏览器并不能证明您的代码是有效的。
  2. 使用像phantom / zombie这样的工具

当然还有其他选择,您可以提取任何非浏览器相关代码,为它们编写单元测试套件并在节点中运行它。这只是JavaScript。

您还可以使用testling等托管服务为您运行浏览器测试

以上是关于使用Jasmine和node.js测试客户端javascript代码的主要内容,如果未能解决你的问题,请参考以下文章

在VSCode中为node.js应用程序调试vanilla jasmine

安装和使用Karma-Jasmine进行自动化测试

如何使用node.js jasmine设置断点?

node.js + coffeescript + jasmine 的好 IDE [关闭]

节点模块导出,访问不存在的属性错误,Jasmine

如何安装和使用Karma-Jasmine