在jhipster示例Spring启动应用程序(https://github.com/jhipster/jhipster-sample-app)中,删除测试是这样的:
@Test
@Transactional
public void deleteBankAccount() throws Exception {
// Initialize the database
bankAccountRepository.saveAndFlush(bankAccount);
int databaseSizeBeforeDelete = bankAccountRepository.findAll().size();
// Get the bankAccount
restBankAccountMockMvc.perform(delete("/api/bank-accounts/{id}", bankAccount.getId())
.accept(TestUtil.APPLICATION_JSON_UTF8))
.andExpect(status().isOk());
// Validate the database is empty
List<BankAccount> bankAccountList = bankAccountRepository.findAll();
assertThat(bankAccountList).hasSize(databaseSizeBeforeDelete - 1);
}
我想通过执行新的get并检查404错误来进行进一步的验证。但我有奇怪的结果(可能是由于交易效应)。 删除项目#1后,如果我在测试中执行此操作:
bankAccountRepository.findAll() // item 1 is not present => OK
bankAccountRepository.findOne(1) // item 1 is present => BAD
restBankAccountMockMvc.perform(get("/api/bank-accounts/{id}", bankAccount.getId())) // HTTP code 200 => BAD
我不明白为什么findAll会返回没有已删除项目的列表,但findOne会返回已删除的项目。
我怎么能有这个?
bankAccountRepository.findOne(1) // null
restBankAccountMockMvc.perform(get("/api/bank-accounts/{id}", bankAccount.getId())) // HTTP code 404
注意:我没有从jhipster项目启动我的应用程序,我只是查看生成的代码以获得好的想法。所以我从一个空的maven / spring-boot项目开始我的项目。
答案 0 :(得分:1)
您使用了错误的ID作为断言,即您正在删除不是1的bankAccount.getId()
,因为在测试设置中创建了BankAccount。您还应该使用与搜索相同的ID进行搜索:bankAccount.getId()
。