使用Jasmine和node.js测试客户端javascript代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Jasmine和node.js测试客户端javascript代码相关的知识,希望对你有一定的参考价值。
给定:客户端javascript代码(在浏览器中运行,使用jquery等)。目前,代码使用Rhino
和envjs
进行测试。我们想切换到node.js.然而,经过一些研究,找不到任何模仿浏览器的envjs
式补充。
在“按原样”运行node.js
时,甚至缺少像alert()
或window
这样的基本功能。
是否有任何标准捆绑,类似Rhino & envjs
为node.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,它可能是一个更好的起点。
另一答案
有两种选择
当然还有其他选择,您可以提取任何非浏览器相关代码,为它们编写单元测试套件并在节点中运行它。这只是JavaScript。
您还可以使用testling等托管服务为您运行浏览器测试
以上是关于使用Jasmine和node.js测试客户端javascript代码的主要内容,如果未能解决你的问题,请参考以下文章
在VSCode中为node.js应用程序调试vanilla jasmine