簡體   English   中英

Java單元測試返回參數對象

[英]Java Unit test return the argument object

我有一個測試用例,試圖測試對象更新是否成功。

嘗試更新的代碼是

@Override
public Company updateCompany(Long id, Company company) {

    Company existCompany = companyRepository.findOne(id);
    // doing something here to apply the values from company to existCompany

    return companyRepository.save(existCompany);
}

對於測試用例

@Test
public void testUpdateCompany() throws Exception {
    Company company = new Company("westpac", "www.westpac.com.au");
    Company existCompany = new Company("westpac", "www.westpac.com");

    when(companyRepository.findOne(anyLong())).thenReturn(existCompany);

    Company newCompany = companyService.updateCompany(1L, company);

    assertEquals(newCompany.getUrl(), "www.westpac.com.au");
}

因為我沒有嘲笑companyRepository.save(existCompany);的返回值companyRepository.save(existCompany); 這將測試失敗。

我的問題是:

有沒有一種方法可以模擬與companyRepository.save(existCompany)的參數完全相同的返回值?

您可以使用Mockito.verify方法檢查對companyRepository.save方法的預期調用。 就像是:

verify(companyRepository).save(existCompany);

在這種情況下,公司應具有正確的equals和hashCode方法

另一種選擇是使用ArgumentCaptor:

ArgumentCaptor<Company> argument = ArgumentCaptor.forClass(Company.class);
verify(companyRepository).save(argument.capture());
assertEquals(argument.getValue().getUrl(), --what you expect--);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM