GWT RPC GWTTestCase + GUICE 2.0



我试图创建一个应用程序与GWT的前端和GUICE的后端服务于谷歌应用程序引擎。

我创建了一个非常简单的应用程序,使用示例设置

http://stuffthathappens.com/blog/2009/09/14/guice-with-gwt/评论- 49355

应用程序运行良好,但是我想为GWT RPC调用添加一些单元测试。

我试图使用GWTTestCase如下:` `公共无效testContactMessageService() {

    ContactMessage message = new ContactMessage();
    message.setName("Jeff");
    message.setMessage("Just wanted to say I'm a fan.");
    message.setEmail("man.nick.utd@gmail.com");
    ContactMessageServiceAsync contactMessageService = GWT.create(ContactMessageService.class);
    contactMessageService.sendMessage(message, 
                new AsyncCallback<String>() {
                    public void onFailure(Throwable caught) {
                        // Show the RPC error message to the user
                        System.out.println(caught);
                        fail("big time failure");
                        finishTest();
                    }
                    public void onSuccess(String result) {
                        System.out.println("success, biatch");
                        assertTrue(true);
                        finishTest();
                    }
                });
      delayTestFinish(1000);
  }

"/* *

然而,当我运行测试时,它失败了,在控制台上它打印

[WARN] 404 - POST/com.resume.Contacthandler.JUnit/GWT。RPC(192.168.0.11) 1425字节请求头主持人:192.168.0.11:4016用户代理:Mozilla/5.0 (Windows;U;Windows NT 5.1;en - us;rv:1.9.0.19)壁虎/2010031422火狐/3.0.19接收语言:en - us接受:/连接:维生推荐人:192.168.0.11:4016/com.resume.Contacthandler.JUnit/junit.html ? gwt.codesvr = 192.168.0.11:4012X-GWT-Permutation: HostedModeX-GWT-Module-Base: 192.168.0.11:4016/com.resume.Contacthandler.JUnit/内容类型:文本/x-gwt-rpc;utf - 8字符集=内容长度:285响应头内容类型:text/html;charset = iso - 8859 - 1内容长度:1425com.google.gwt.user.client.rpc.StatusCodeException: 404HTTP错误:404 not_foundRequestURI =/com.resume.Contacthandler.JUnit GWT.rpc

从这个输出中,我假设Guice的服务器端没有得到设置。

运行GWTTestCases时如何设置服务器端Guice servlet

要使Guice和GWT工作,除了博客中的方法之外,还有更简单的方法。例如,下面的代码是启动并运行servlet所需要做的大部分工作。这不会触及任何GWT代码,因此很容易使用纯JRE测试进行测试——您只需要设置一个测试注入器并获得Service Impl的实例。

serve("/myapp/importservice").with(SourceImportServiceImpl.class);

@Singleton
public class SourceImportServiceImpl extends RemoteServiceServlet {
  private Provider<SimpleDao> daoProvider;
  @Inject
  public SourceImportServiceImpl(Provider<SimpleDao> daoProvider) {
    this.daoProvider = daoProvider;
  }
 ... RPC method implementations
}

相关内容

  • 没有找到相关文章

最新更新