假设我在JavaScript
中有一些代码,它使用jQuery.ajax
来调用服务器REST API。
为了测试它,我想
JavaScript
代码“无头”,即没有浏览器; 看起来我可以将node.js
与嵌入式虚拟HTTP服务器一起使用。是否有意义?你知道这些项目的任何例子(在github或某处)吗?
答案 0 :(得分:1)
我还没有做过这样的事情但说实话,我正在评估以下方法:
http://blog.stevensanderson.com/2010/03/30/using-htmlunit-on-net-for-headless-browser-automation/
这真的很有趣,我希望这个链接可以帮助你入门
答案 1 :(得分:1)
使用node.js的主要问题是它不提供浏览器将提供的所有内容......包括XMLHttpRequest。
我正在开发一个库(专有,仅供内部使用),我正在尝试使用node.js进行测试。
我缺乏XHR支持的工作是将this implementation of XHR与一些Microsoft提供的代码to add backwards compatibility for the standard XHR to old IE结合使用。
如果您正在使用jQuery,那么您可能需要修改它,因为jQuery稍后会为旧IE添加自己的兼容性。
结果如下:
var XMLHttpRequest;
if (typeof window !== 'undefined') {
XMLHttpRequest = window.XMLHttpRequest;
}
if (typeof XMLHttpRequest === "undefined") {
console.log("Undefined"); (function() {
try {
XMLHttpRequest = new ActiveXObject("Msxml2.XMLHTTP.6.0");
} catch(e) {}
try {
XMLHttpRequest = new ActiveXObject("Msxml2.XMLHTTP.3.0");
} catch(e) {}
try {
XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {}
try {
XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
} catch(e) {}
//Microsoft.XMLHTTP points to Msxml2.XMLHTTP and is redundant
if (typeof XMLHttpRequest === "undefined") {
throw new Error("This browser does not support XMLHttpRequest.");
}
})();
};
除此之外,在测试套件中运行简单的HTTP服务器是解决此类问题的常用方法。我还没有实现它,并且正在使用在测试服务器上运行的httpd。