0

Cookieを使用してGWTプロジェクトの単体テストを行いたいと思います。私は現在、コードの認証部分を単体テストしています。したがって、sessionIDをCookieとして保存し、後で取得できるようにする必要があります。私は現在、非同期動作をテストするためにSyncProxyで通常のTestCase(GWTTestCaseではない)を使用しています。

問題は、SyncProxyもユニットテストもブラウザとして動作せず、Cookieの管理をサポートしていないことです。これをテストする方法はありますか?

完了するために、テストしようとすると、次のエラーが発生します。

java.lang.UnsatisfiedLinkError: com.google.gwt.user.client.Cookies.uriEncode(Ljava/lang/String;)Ljava/lang/String;
    at com.google.gwt.user.client.Cookies.uriEncode(Native Method)
    at com.google.gwt.user.client.Cookies.setCookie(Cookies.java:177)
    at com.google.gwt.user.client.Cookies.setCookie(Cookies.java:158)
    at com.projects.client.Authentication.setSesssionCookie(Authentication.java:64)
    at com.projects.client.Authentication$signInCredentialsHandler.onSuccess(Authentication.java:96)
    at com.projects.client.Authentication$signInCredentialsHandler.onSuccess(Authentication.java:1)
    at com.gdevelop.gwt.syncrpc.RemoteServiceInvocationHandler$1.run(RemoteServiceInvocationHandler.java:175)
4

3 に答える 3

1

SSR が言ったように、Cookie は既にテストされているのに、なぜもう一度テストする必要があるのですか??. メソッドを単体テストできるように、Cookie 文字列が必要だと思います。その場合は、そのメソッドをモックして、必要な文字列を返す、メソッド call を無視してください。

于 2013-01-03T13:20:32.660 に答える
0

私は同じことをしています。このコードは私の環境で動作しています。セッション ID は Cookie から取得できます。

CookieManager cookiemanager = LoginUtils.loginFormBasedJ2EE("hostname", "username", "password");

                    SyncProxy.setBaseURL("baseURI");



                    StandardDispatchService rpcService =  SyncProxy.createProxy(StandardDispatchService.class,
                            new ProxySettings().setCookieManager(cookiemanager));

                    System.out.println(cookiemanager.getCookieStore().getCookies().get(0));
                    String JSESSIONID = cookiemanager.getCookieStore().getCookies().get(0).getValue();

                    rpcService.execute(new XXXAction(XXX,XX));
于 2015-04-02T09:01:37.453 に答える