2013-01-03 61 views
0

我想使用Cookie對GWT項目進行單元測試。我目前正在對代碼的驗證部分進行單元測試。所以我需要能夠將sessionID存儲爲cookie並稍後檢索它。我目前正在使用正常的TestCase(不是GWTTestCase)和SyncProxy來測試異步行爲。使用Cookie對GWT單元進行測試

問題是,SyncProxy,也沒有單元測試行爲作爲瀏覽器,並支持cookies的管理。任何想法如何我可以測試這個?

是完整的,試圖測試的時候,我得到這個錯誤:

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) 
+0

正在使用硒測試超出範圍嗎? – SSR

回答

1

正如SSR告訴的,cookie已經過測試,爲什麼你需要再次測試一下??。我相信你想要一個cookie字符串,以便你可以單元測試你的方法。如果是這種情況,請嘗試嘲諷該方法,並返回您想要的任何字符串或者您可以忽略方法調用

+0

謝謝。我沒有考慮嘲笑。 您提供的鏈接無效。 這個wiki有一篇不錯的文章:http://en.wikipedia.org/wiki/Mock_object – Vjeetje

1

曲奇單位測試方法

1)曲奇http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/test/com/google/gwt/user/client/CookieTest.java

2 GWT的單元測試),這是不真的很清楚爲什麼你需要測試已經通過單元測試的GWT代碼。如果你的場景是集成測試,那麼基於Selenium的瀏覽器測試用例是最好的選擇。

3)用嘲諷庫或測試實用工具,比如http://code.google.com/p/gwt-test-utils/

我不會推薦第三種方法。如果你的單元測試變得複雜,那麼你的代碼很複雜,或者這種情況是錯誤的。

+0

問題是我想測試身份驗證類的signIn和signOut。但是,當我測試這些方法cookies正在設置,檢索,..因此我發佈的錯誤。 我是否應該使用TESTING標誌,將sessionID存儲在其他地方?我不喜歡這兩種選擇,他們不保持代碼清潔。 – Vjeetje

0

我正在做同樣的事情,這段代碼在我的環境中工作。 您可以從cookie獲取sessionid。

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));