如何在命令行中testingAJAX?
假设我在JavaScript
有一些代码,它使用jQuery.ajax
调用服务器REST API。
为了testing它,我想
- 使用一个虚拟的HTTP服务器,它读取来自静态XML文件的响应;
- 运行
JavaScript
代码“无头”,即没有浏览器; - 在命令行中运行所有这些testing。
它看起来像我可以使用node.js
与一个embedded式虚拟HTTP服务器。 是否有意义? 你知道这样的项目的任何例子(在github或其他地方)吗?
我还没有做这样的事情,但说实话,我正在评估以下方法:
http://blog.stevensanderson.com/2010/03/30/using-htmlunit-on-net-for-headless-browser-automation/
这真的很有趣,我希望这个链接可以帮助你开始
使用node.js的主要问题是它不提供浏览器提供的所有东西,包括XMLHttpRequest。
我正在开发一个库(专有的,仅供内部使用),我试图用node.js进行testing。
我对XHR缺乏支持的工作是将这个XHR实现与一些微软提供的代码结合使用,为标准XHR添加向旧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."); } })(); };
除此之外,在testing套件中运行一个简单的HTTP服务器是解决这类问题的常用方法。 我还没有做到这一点,并正在testing运行在testing服务器上的httpd。