首页 > 解决方案 > 我无法理解junit mockito测试中willThrow、doThrow的逻辑

问题描述

我有这段简单的代码,但无法理解它的逻辑和含义。

void findByIdThrows(){
    given(addressRepository.findById(1)).willThrow(new RuntimeException("boom iii"));

    assertThrows(RuntimeException.class, () -> servic.findById(1));

    then(addressRepository).should().findById(1);
}

这是否意味着:如果您在查找 id #1 的地址期间遇到 RuntimeException,那么断言我将给出 RuntimeException?

最后一行(然后....)到底做了什么?

标签: javaspringspring-boottestingjunit

解决方案


第一行:

定义调用addressRepository.findById(1)将抛出RuntimeException

第 2 行:

检查是否servic.findById(1)抛出RuntimeException

第 3 行:

相当于:

 verify(addressRepository).findById(1)

并检查是否addressRepository.findById(1)被调用


推荐阅读