MockMvcユニットテスト
1865 ワード
MockMvcはHttp要求のシミュレーションを実現し、直接ネットワークの形式を使用し、Controllerの呼び出しに変換することができ、これによりテスト速度が速く、ネットワーク環境に依存せず、検証のツールを提供することができ、要求の検証を統一し、便利にすることができる. MockMvcBuilderはMockMvcを構築するためのコンストラクタで、主に2つの実装があります.StandaloneMockMvcBuilderとDefaultMockMvcBuilderは、それぞれ2つのテスト方式に対応しています.すなわち、独立してWeb環境テストをインストールおよび統合します(この方式は、実際のWeb環境を統合するのではなく、対応するMock APIを通じてシミュレーションテストを行い、サーバを起動する必要はありません).静的工場MockMvcBuildersを直接使用して作成すればよい.
プロジェクトにshiroフレームが使用されている場合.エラーが発生する可能性があります:
@RunWith(SpringRunner.class)
@SpringBootTest()
public class test {
@Autowired
private WebApplicationContext wac; // WebApplicationContext
private MockMvc mockMvc; // MVC 。
@Before //
public void setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void test() throws Exception {
String responseString = mockMvc.perform(get("/test") //
.contentType(MediaType.APPLICATION_JSON_UTF8) // contentType
.param("name", " ") ////
.param("phone", "18758694528")
.accept(MediaType.APPLICATION_JSON)) //
.andExpect(status().isOk()) // 200
.andDo(print()) //
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) //
.andReturn().getResponse().getContentAsString();//
System.out.println(responseString);
}
}
プロジェクトにshiroフレームが使用されている場合.エラーが発生する可能性があります:
org.apache.shiro.UnavailableSecurityManagerException: No SecurityManager accessible to the calling code
次の内容を追加する必要があります.private ThreadState _threadState;
protected Subject _mockSubject;
@Before
public void before() {
_mockSubject = Mockito.mock(Subject.class);
_threadState = new SubjectThreadState(_mockSubject);
_threadState.bind();
}