0

非同期テストを実行しようとしており、REST-API を持つサーバーにリクエストを送信する必要があります。したがって、私の問題は、テストがローカルマシンで実行されることですが、これは明らかに同じ生成元ポリシーに違反しており、GWTtestCase を実行しようとすると RuntimeError が発生します。

com.google.gwt.http.client.RequestPermissionException: The URL http://<url-to-my-rest-service> is invalid or violates the same-origin security restriction
    at com.google.gwt.http.client.RequestBuilder.doSend(RequestBuilder.java:394)
    at com.google.gwt.http.client.RequestBuilder.send(RequestBuilder.java:242)
    ...

これらのテストを手動で実行できることはわかっていますが、ブラウザー (クロム) の最新の更新により、GWT プラグインが削除されました。そのため、SuperDevMode でテストを起動する方法がわかりません。

質問:

  • GWT JUnit テストの同一生成元ポリシーを無視する方法はありますか?
  • テストに使用するブラウザを Chrome/Chromium に変更できますか?
  • ブラウザで SuperDevMode を使用してテストを手動で実行するにはどうすればよいですか?

編集:

テストを手動で実行したい場合は、ターミナルに次のように書き込みます。

mvn gwt:test -Dgwt.args="-prod -userAgents safari -runStyle Manual:1"

Maven は、テストを実行するためにブラウザーに入力する必要がある端末に URL を出力します。

http://127.0.1.1:57818/<my-package>.JUnit/junit-standards.html?gwt.codesvr=127.0.1.1:40387

しかし、この URL をブラウザー (Chromium) に入力すると、GWT プラグインが現在インストールされていないことが通知されます。疑問符の後ろの部分を削除すると (localhost で SuperDevMode で GWT コードを実行する場合と同様に) ?gwt.codesvr=127.0.1.1:40387、ブラウザには空白のページのみが表示され、コードサーバーを次のように起動すると:

mvn process-classes gwt:run-codeserver

codeserver-bookmarks ( Dev Mode On) が機能しておらず、GWT が「コンパイル可能」なモジュールを検出できません。

質問:

では、JUnit-Test-Module を SuperDevMode でコンパイルするにはどうすればよいでしょうか。

4

1 に答える 1

1

SOP をバイパスすることはできませんが、サーブレットを使用してリクエストをリモート サーバーにプロキシすることはできます ( <servlet>gwt.xml ファイルで宣言されたサーブレットは JUnitShell によって受け入れられます)。

-runStyle Manualまた、Chrome/Chromium でテストを実行する場合は、またはSeleniumを使用できます(注: PhantomJS のカスタム実行スタイルもあります)。製品モード:-prod -userAgents safari

于 2014-10-01T09:35:46.593 に答える