#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; }}