【发布时间】:2023-04-10 19:23:01
【问题描述】:
当有人试图用值 0 调用它时,我有这个方法会抛出一个 IllegalArgumentException。
我想为方法getFrequentRenterPoints 编写几个存根和模拟测试。
我不知道模拟中使用的任何“何时”或“验证”语句,所以我将模拟的部分和存根的部分混合在一起并想出了这个:
@Test
public void methodGetFrequentRenterPointsShouldThrowIllegalArgumentException() {
//given
Movie movieMock = mock(Movie.class);
//when
movieMock.getFrequentRenterPoints(0);
//then
assertThrows(IllegalArgumentException.class, () -> {
movieMock.getFrequentRenterPoints(0);
});
}
是否可以与其他 Mocks 一起上课,或者如果我想使用 assertThrows 是否应该将其更改为存根?或者我可以在模拟中使用assertThrows 吗?
【问题讨论】:
-
我不知道是否推荐,因为它取决于原始代码。
-
设置一个模拟抛出,如果它被调用,然后调用它有什么意义?您无需测试 mockito 是否有效。
-
@AndyTurner 老实说我不知道,我只是根据我们在课堂上做的例子来模拟我的测试用例。我认为这会在用 0 调用时抛出它,如果这有意义的话