如何在命令行中测试 AJAX

How to test AJAX in command line?

本文关键字:测试 AJAX 命令行      更新时间:2023-09-26

假设我在JavaScript中有一些代码,它使用jQuery.ajax来调用服务器REST API。

为了测试它,我想

  • 使用虚拟 HTTP 服务器,它从静态 XML 文件中读取响应;
  • 运行JavaScript代码"无头",即没有浏览器;
  • 在命令行中运行所有这些测试。

看起来我可以将node.js与嵌入式虚拟HTTP服务器一起使用。有意义吗?你知道任何此类项目的例子(在github或其他地方)吗?

老实说,我还没有做过这样的事情,但我正在评估以下方法:

http://blog.stevensanderson.com/2010/03/30/using-htmlunit-on-net-for-headless-browser-automation/

这真的很有趣,希望这个链接能帮助你入门

使用 node 的主要问题.js 因为它没有提供浏览器将提供的所有内容......包括 XMLHttpRequest。

我正在

开发一个库(专有的,仅供内部使用),我正在尝试使用 node.js 进行测试。

对于缺乏 XHR 支持,我的解决方法是将 XHR 的这种实现与一些Microsoft提供的代码结合使用,以将标准 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.");
        }
    })();
};

除此之外,在测试套件中运行简单的HTTP服务器是此类问题的常用方法。我还没有实现它,并且正在测试服务器上运行的httpd。