【发布时间】:2013-12-19 06:05:13
【问题描述】:
在 Spring 3.1 中,我可以将具有 `@Scope("request") 的 Jax-RS 资源自动装配到我的单元测试中,前提是我包含以下 BeanFactoryPostProcessor:
@Component
public class MockRequestBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
public void postProcessBeanFactory(
ConfigurableListableBeanFactory beanFactory) throws BeansException {
beanFactory.registerScope("request", new RequestScope());
MockHttpServletRequest request = new MockHttpServletRequest();
ServletRequestAttributes attributes = new ServletRequestAttributes(request);
RequestContextHolder.setRequestAttributes(attributes);
}
}
在 Spring 3.2 中,第一个运行的测试方法可以工作,但所有后续测试方法都会得到
java.lang.IllegalStateException:未找到线程绑定请求:您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上是在 Web 请求中操作并且仍然收到此消息,则您的代码可能在 DispatcherServlet/DispatcherPortlet 之外运行:在这种情况下,请使用 RequestContextListener 或 RequestContextFilter 来公开当前请求。
我怎样才能让我的测试再次运行?
【问题讨论】:
-
请添加您的测试类。
标签: java spring unit-testing jax-rs