Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring启动测试-请求/会话范围的bean_Java_Spring_Junit_Spring Boot_Spring Test - Fatal编程技术网

Java Spring启动测试-请求/会话范围的bean

Java Spring启动测试-请求/会话范围的bean,java,spring,junit,spring-boot,spring-test,Java,Spring,Junit,Spring Boot,Spring Test,如中所回答的,我假设在使用@webappconfiguration(或@WebIntegrationTest for spring boot)时可以在测试类中注入请求/会话bean。我工作不努力 这是我的测试类配置: @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = SocialInfoSrvAppConfig.class) @WebIntegrationTest //@Integr

如中所回答的,我假设在使用@webappconfiguration(或@WebIntegrationTest for spring boot)时可以在测试类中注入请求/会话bean。我工作不努力

这是我的测试类配置:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = SocialInfoSrvAppConfig.class)
@WebIntegrationTest
//@IntegrationTest
//@WebAppConfiguration
public class FacebookServiceTest {
...
    @Inject
    private Facebook facebook;
...
}
这是我的应用程序配置:

@SpringBootApplication
// @EnableResourceServer
@EnableJms
@EnableSocial
@EnableWebMvc
public class SocialInfoSrvAppConfig extends SpringCommonApp {

}
我得到这个错误:

org.springframework.beans.factory.BeanCreationException:创建名为“scopedTarget.facebook”的bean时出错:当前线程的作用域“request”未处于活动状态;如果您想从一个单体引用它,请考虑为这个bean定义一个作用域代理;嵌套异常为java.lang.IllegalStateException:未找到线程绑定请求:您是在实际web请求之外引用请求属性,还是在原始接收线程之外处理请求?如果您实际上在web请求中操作,并且仍然收到此消息,那么您的代码可能在DispatcherServlet/DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter公开当前请求

好像我不能将这个请求范围的bean注入到我的测试中


我遗漏了什么?

我有同样的问题,如果在注入的对象中使用线程局部变量,也会出现同样的问题。你找到正确的解决方案了吗?还没有。在回到本部分之前,请先完成其他任务。希望在此之前我们能得到一些帮助。请向我们展示
Facebook
bean的确切配置(即
@bean
方法的完整声明,包括该方法上的所有注释)。我询问的原因是您可能忽略了将其配置为作用域代理。Facebook bean是spring-social的一部分。无论如何,我为Facebook bean制作了一个包装,并将其配置为代理:-@Component@Scope(proxyMode=ScopedProxyMode.INTERFACES,scopeName=“request”)公共类FacebookProxyImpl实现FacebookProxy{…}----也不能注射。