PhantomJSのlocalToRemoteUrlAccessEnabled
さっき知ったのですが、phantomsjsのオプションでlocalToRemoteUrlAccessEnabledをtrueにするとクロスドメイン間の通信をXMLHttpRequestとかでも出来るらしいとの事
describe("...", function() {
it("...", function(done) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://192.168.1.101:3000", true);
xhr.setRequestHeader("Accept", "application/json");
xhr.onload = function() {
expect(this.status).to.be.equal(200);
expect(xhr.getResponseHeader("Content-Type")).to.match(/^application/json/);
var response = JSON.parse(this.response);
expect(response).to.be.ok;
done();
};
xhr.onerror = function() {
done(new Error());
};
xhr.send(null);
});
});
的なのをmocha+chaiで書いて、mocha-phantomjsで実行する際に
mocha-phantomjs -s localToRemoteUrlAccessEnabled=true -t 5000 runner.html
的な感じとかでオプションで有効にしてしまえばクロスドメイン問題があっても通信できちゃうっぽい。無論、このオプションを指定しなかった場合はテスト通らないし、ブラウザアクセスでのテストも失敗してしまうっていうオチがある
つうかこういうテスト手法っていうのはあんまメリットが無いと思う。まぁあくまで「クロスドメイン解決する策はあるよ」的なネタくらいにしかならなそう
とりまぁmocha-phantomjsを使う前提でクロスドメイン通信を出来るようにしたいならこの手を使えば出来なくも無いって事で