4

サーバー REST API を呼び出すためJavaScriptに使用するコードがにあるとします。jQuery.ajax

それをテストするために、私はしたいです

  • 静的 XML ファイルから応答を読み取るダミーの HTTP サーバーを使用します。
  • JavaScriptコードを「ヘッドレス」で、つまりブラウザなしで実行します。
  • コマンドラインでこれらすべてのテストを実行します。

node.js組み込みのダミー HTTP サーバーで使用できるようです。それは理にかなっていますか?そのようなプロジェクトの例を知っていますか (github またはどこかで)?

4

2 に答える 2

1

正直なところ、このようなことはまだ行っていませんが、次のアプローチを評価しています。

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

これは非常に興味深いものです。このリンクが開始に役立つことを願っています

于 2012-06-03T19:11:40.963 に答える
1

これに 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 で作業しています。

于 2012-06-03T19:27:43.267 に答える