Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在命令行中测试AJAX?_Javascript_Ajax_Unit Testing_Node.js - Fatal编程技术网

Javascript 如何在命令行中测试AJAX?

Javascript 如何在命令行中测试AJAX?,javascript,ajax,unit-testing,node.js,Javascript,Ajax,Unit Testing,Node.js,假设我在JavaScript中有一些代码,它使用jQuery.ajax调用服务器RESTAPI 为了测试它,我想 使用虚拟HTTP服务器,从静态XML文件读取响应 运行JavaScript代码“headless”,即不使用浏览器 在命令行中运行所有这些测试 看起来我可以在嵌入式虚拟HTTP服务器上使用node.js。这有意义吗?你知道这类项目的任何例子吗(在github或其他地方)?老实说,我还没有做过类似的事情,但我正在评估以下方法: 这真的很有趣,我希望这个链接能帮助您入门使用node

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

为了测试它,我想

  • 使用虚拟HTTP服务器,从静态XML文件读取响应
  • 运行
    JavaScript
    代码“headless”,即不使用浏览器
  • 在命令行中运行所有这些测试

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

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


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

使用node.js的主要问题是它没有提供浏览器所能提供的一切……包括XMLHttpRequest

我正在开发一个库(专有,仅供内部使用),我正试图用node.js测试它

我针对缺乏XHR支持的问题的解决方法是与一些Microsoft提供的代码结合使用

如果您使用的是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。

是的,这很有意义<代码>:)我还没有使用过无头浏览器,所以我不知道如何做到这一点,但我相信这并不困难。