【发布时间】:2010-06-21 09:10:29
【问题描述】:
我正在尝试将一些单元测试添加到我们公司的一些代码中。是的,我知道它应该已经存在,但似乎并不是每个人都对单元测试有相同的看法。
但是,我遇到了一些阻碍。诚然,我的 Java、Spring 和单元测试知识并不是应有的全部。我的问题是这样的:
我在代码中添加了一个单元测试,用于测试一个类。此类包含一个具有 scope="request" 的 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" />
【问题讨论】:
-
或多或少是stackoverflow.com/questions/2411343/… 的副本 - 忽略有关测试执行侦听器的部分。
标签: spring junit request easymock