いくつかの会社のコードに単体テストを追加しようとしています。はい、すでにあるはずですが、すべての人が私と同じように単体テストについて考えているわけではないようです。
しかし、私は少しストッパーにぶつかりました。確かに、私の 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" />