gpt4 book ai didi

java - 在 Stripes 框架中,使用 MockRoundtrip 时如何在操作 bean 中依赖注入(inject)字段?

转载 作者:太空宇宙 更新时间:2023-11-04 07:48:52 26 4
gpt4 key购买 nike

以下是设置 Stripes 以使用 MockRoundtrip 的示例:

private void setupStripes() {
context = new MockServletContext("testresults");

// Add the Stripes Filter
Map<String,String> filterParams = new HashMap<String,String>();
filterParams.put("ActionResolver.Packages", "com.test.project.action,com.test.results.action");
context.addFilter(StripesFilter.class, "StripesFilter", filterParams);

// Add the Stripes Dispatcher
context.setServlet(DispatcherServlet.class, "StripesDispatcher", null);


mockRoundtrip = new MockRoundtrip(context, MyActionBean.class);
assertNotNull(mockRoundtrip.getActionBean(MyActionBean.class));
}

问题是最后一行总是断言失败。您必须先调用 mockroundtrip.execute("eventName"),但到那时,您的操作 bean 已经为您创建好了。如果您的操作 bean 执行依赖于应用程序服务器的操作(例如:使用 EJB、执行 JNDI 查找),您将永远无法完成对 execute() 的调用。我想要做的是获取我的操作 bean 实例,依赖项注入(inject)其字段,然后调用 execute()。有办法做到这一点吗?

最佳答案

我将其发布到邮件列表上并得到了这个答案:

Apparently the guy uses an Interceptor for his tests.

I think that's what you want too. Write a Stripes Interceptor that performs the "injection" as you want, and only register this one for your unit tests. You don't have to stub anything IMO.

Btw that's what @SpringBean does: it's based on Interception as well.

总之,创建一个仅在运行测试代码时使用的拦截器。该拦截器可以依赖注入(inject)您正在测试的操作 bean。

关于java - 在 Stripes 框架中,使用 MockRoundtrip 时如何在操作 bean 中依赖注入(inject)字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14839651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com