2013-01-03 34 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));