ブラウザ (client.html) でのテスト中にメイン ユニット テストを作成し、Node を使用してテストの自動化をセットアップする準備ができました。 Sauce Labs のようなサードパーティのサービスを使用しても問題ないので、webdriver モードを使用して PhantomJS を介して Intern テストを実行しようとしています。
これらのオプションを使用して PhantomJS を実行しています。
$ phantomjs --ignore-ssl-errors=true --web-security=false --webdriver=8910
私のインターン構成は次のようになります。
define({
proxyPort: 9000,
proxyUrl: 'http://localhost:9000/',
environments: [
{
browserName: 'phantom',
version: '1.9.0',
platform: 'Linux'
}
],
webdriver: {
host: 'localhost',
port: 8910
},
maxConcurrency: 3,
useSauceConnect: false,
// ...
});
ほとんどの場合はうまくいくようですが、テストで AJAX リクエストに問題があります。テストは Intern 独自のサーバーを介して実行されるため、AJAX フィルターを追加して、要求が正しい場所に送信されるようにしました。
$.ajaxPrefilter(function (options) {
options.url = serverName + options.url;
});
ただし、AJAX リクエストが失敗していることはまだわかっています。さらに調べてみると、リクエストが送信されていないことがわかりました (AJAXreadyState
は 0 で失敗します)。PhantomJS は、これ以上の情報を提供していないようです。の--web-security=false
フラグはphantomjs
、クロスドメイン リクエストが可能であることを保証する必要があるため、原因がわかりません。
PhantomJS では特定のエラーはスローされません。失敗ハンドラーに提供される唯一の情報は、「エラー」のステータスです。
編集:
jQuery を使用せずに手動で XMLHttpRequest を実行してみましたが、正常に動作します。明らかに、これは jQuery 側のものです。を有効にcrossDomain
しても解決しません。