我试图给我们的一些公司代码添加一些单元测试。是的,我知道它应该已经存在,但并不是每个人都像我一样对单元测试有相同的看法。单元测试涉及范围=“请求”bean的EasyMock对象
但是,我已经对我有点阻碍了。无可否认,我的Java,Spring和单元测试知识并不全是他们应该做的。我的问题是这个虽然:
我已经添加了一个单元测试我的代码,它测试一个类。这个类包括具有范围=“请求”的bean,而当它试图实例化这个bean它抛出一个异常:
java.lang.IllegalStateException: No Scope registered for scope 'request'
我相信这是因为我没有一个HttpServletRequest对象,但我不知道如何创建一个模拟对象,也不知道如何创建一个模型对象到单元测试中,以便解决这个问题。
下面是所涉及的代码,我相信包括所有的是这个问题的部分细节的削减版本。
我该如何得到这个工作?
@Test
public void handleRequest() {
try {
Message<?> outMessage = (Message<?>) response.handleRequest(map);
} catch (Exception e) {
assertNotNull(e);
}
outMessage.getPayload().toString());
}
public class upddResponse extends AbstractResponseTransform {
@SuppressWarnings("unchecked")
public Message<?> handleRequest(Map<String, Message<?>> messages) throws Exception {
super.addEnvironmentDetails(serviceResponseDocument.getServiceResponse());
}
public abstract class AbstractResponseTransform implements ResponseTransform,
ApplicationContextAware {
private ApplicationContext applicationContext;
private MCSResponseAggregator mcsResponseAggregator;
public ServiceResponseType addEnvironmentDetails(ServiceResponseType serviceResponse) throws Exception {
try {
mcsResponseAggregator = (MCSResponseAggregator) applicationContext
.getBean("mcsResponseAggregator");
}
catch (Exception ex) {
}
}
}
public interface ResponseTransform extends Transform {
public Message<?> handleRequest(Map<String, Message<?>> messages)
throws Exception;
}
<bean id="mcsResponseAggregator" class="com.company.aggregator.MCSResponseAggregator" scope="request" />
或多或少的http://stackoverflow.com/questions/2411343/request-scoped-beans-in-spring-testing的副本 - 忽略有关测试执行侦听器的位。 – skaffman 2010-06-21 09:51:41