私のレストコントローラとサービスのテストは書かれません。 私は春の起動時に統合テストを書く方法、書類を読んでいます。 だから例えば私が春のブート、crudレポジトリのテスト
@RestController
@RequestMapping(value = "users")
public class SvcUser {
@RequestMapping(value = "user", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public ResponseEntity<String> registrateUser(@RequestBody Registration registrate) throws TimeoutException, SocketTimeoutException {
final String result = userService.registrateUser(registrate.getPhoneCode(), registrate.getPhoneNumber(), registrate.getOsType());
return ResponseEntity.ok(result);
}
そしてuserServiceClass内の休憩Controllerクラスを持っている私は、この
registrateUser(String args ...){
Users user = new User();
user.setSmth(smth);
userRepository.save(user)
}
私の統合テスト
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT,classes = GmoikaApiApplication.class)
public class GmoikaApiApplicationTests {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setUp(){
this.mockMvc = webAppContextSetup(wac).build();
}
@Test
public void firstTest() throws Exception {
mockMvc.perform(post("https://stackoverflow.com/users/user")
.content("my new user"))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(jsonPath("$.error",is(0)))
.andDo(print())
.andReturn();
}
のようになめらかでしたそして、これは仕事の罰金ですが、私私のデータベースに新しいユーザーがいます。私はテストのためにのみ生産の偽のユーザーを作成したくないです。私の質問はどのように統合テスト内のdbで新しいユーザーの作成を避けるためですか?
テストを使用するdbは 'hsqldb'を意味し、スプリングテストのデフォルトです。あなたはそれを使用することができます。 – sunkuet02
'@ Transactional'と' @ Rollback'を使ってユーザを作成し、DBにロールバックすることができます。 – Brad