#WIP
本番相当のステージング環境(またはプレ本番環境と呼ぶこともある)を作ってテストするのは、相応のコストがかかるわりに、結局検出できない問題も多く存在するので、本番環境でテストしちまえと言うアイデア。
フィーチャーフラグのようなContinuous Deployment用の仕組みと合わせて、ようやく費用対効果が見合うとされる (『Continuous Deployment』)。
本番環境でのテストのパターン
import org.springframework.context.support.StaticApplicationContext;
import static org.mockito.Mockito.*;
class HogeControllerTest {
StaticApplicationContext context;
void setup() {
context = new StaticApplicationContext();
context.registerBean(HogeController.class);
context.registerBean(HogeUsecase.class, this::mockHogeUsecase);
}
void test() {
HogeController controller = context.getBean(HogeController.class);
controller.processHoge();
verify(context.getBean(HogeUsecase.class), times(1)).verifyHoge(any());
}
private HogeUsecase mockHogeUsecase() {
HogeUsecase mock = mock(HogeUsecase.class);
// … MockObjectのふるまい定義
return mock;
}
}