SpringBoot 2.Xユニットテスト——Api編(踏み込み穴付)
1918 ワード
コードを先に入力:
ピット1:ymlプロファイルはdev、uat、prod環境を区別するため、ローカルであるため@ActiveProfilesコメントを追加してdev環境を指定します.バックグラウンドはアプリケーション-dev.ymlプロファイルにマッピングされます.
ピット2:制御クラスcustControllerが@Autowiredを介して自動的に注入され、mockMvcオブジェクトが構築されます.もともと学んだのは他の人が直接newしていたが、依存している各サービス類がnullであることに気づき、依存注入の問題に気づいた.
ピット3:プロジェクトでSpring Securityを使用しているため、パーミッションブロックの問題が発生するため@WithUserDetails注記で解決します.ここでvalueはあなたがログインしたユーザー名を表し、userDetailsServiceBeanNameはあなたのUserDetailsService実装クラスを指定しました.例えば私はJwtUserDetailsServiceを使用してUserDetailsServiceを実装しました.そのbeanNameはjwtUserDetailsServiceで、実装しなければならない方法loadUserByUsernameがあります.そのパラメータ「username」はもちろんあなたが追加したvalue値です.テスト方法を実行するとき、バックグラウンドではloadUserByUsernameというメソッドが自動的に呼び出されます.
ピット4:オーバーライド率のエラーをテストし、/binディレクトリの下idea 64を見つけた.exe.vmoptionsファイル、末尾に-Djavaを追加します.io.tmpdir=C:Temp、ディレクトリが存在するかどうか注意.
ピット5:パッケージ名が一致することを保証してください.
@SpringBootTest(classes = CrmBackendApplication.class)
@ActiveProfiles("dev")
@RunWith(SpringRunner.class)
public class CustControllerTest {
private MockMvc mockMvc;
@Autowired
private CustController custController;
@Before
public void setup() {
mockMvc = MockMvcBuilders.standaloneSetup(custController).build();
}
@Test
@WithUserDetails(value = "san.zhang", userDetailsServiceBeanName = "jwtUserDetailsService")
public void test() throws Exception {
MvcResult mvcResult = mockMvc.perform(post("/cust/search").contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).content("{
" +
"\t\"pageSize\":100,
" +
"\t\"content\":\" 1462\",
" +
"\t\"queryType\":\"cust_queryType_custName\"
" +
"}")).andReturn();
Assert.assertEquals(200, mvcResult.getResponse().getStatus());
}
}
ピット1:ymlプロファイルはdev、uat、prod環境を区別するため、ローカルであるため@ActiveProfilesコメントを追加してdev環境を指定します.バックグラウンドはアプリケーション-dev.ymlプロファイルにマッピングされます.
ピット2:制御クラスcustControllerが@Autowiredを介して自動的に注入され、mockMvcオブジェクトが構築されます.もともと学んだのは他の人が直接newしていたが、依存している各サービス類がnullであることに気づき、依存注入の問題に気づいた.
ピット3:プロジェクトでSpring Securityを使用しているため、パーミッションブロックの問題が発生するため@WithUserDetails注記で解決します.ここでvalueはあなたがログインしたユーザー名を表し、userDetailsServiceBeanNameはあなたのUserDetailsService実装クラスを指定しました.例えば私はJwtUserDetailsServiceを使用してUserDetailsServiceを実装しました.そのbeanNameはjwtUserDetailsServiceで、実装しなければならない方法loadUserByUsernameがあります.そのパラメータ「username」はもちろんあなたが追加したvalue値です.テスト方法を実行するとき、バックグラウンドではloadUserByUsernameというメソッドが自動的に呼び出されます.
ピット4:オーバーライド率のエラーをテストし、/binディレクトリの下idea 64を見つけた.exe.vmoptionsファイル、末尾に-Djavaを追加します.io.tmpdir=C:Temp、ディレクトリが存在するかどうか注意.
ピット5:パッケージ名が一致することを保証してください.