Sau*_*ngh 0 java junit mockito
我正在尝试在 Vote.java 下面进行测试,它有一个名为 isEligibleToVote() 的方法,该方法在检查后又调用另一个方法 getResult() 。我试图捕捉论点并断言,但在这样做的同时我得到了Wanted but not invoked: vote.getResult(<Capturing argument>);
我明白这是因为vote.isEligibleToVote(18);我已经使用 @Mock 声明了投票,这是不正确的,但我不知道如何使用 ArgumentCaptor 测试此类并验证方法。
投票.java
public class Vote {
public void isEligibleToVote(int age){
if(age>18)
getResult("yes");
else
getResult("no");
}
public String getResult(String result){
return result;
}
Run Code Online (Sandbox Code Playgroud)
}
投票测试.java
@ExtendWith(MockitoExtension.class)
public class VoteTest {
@Mock
Vote vote;
@Test
public void isEligibleToVote_test(){
ArgumentCaptor<String> stringArgumentCaptor = ArgumentCaptor.forClass(String.class);
vote.isEligibleToVote(18);
verify(vote).getResult(stringArgumentCaptor.capture());
assertEquals("yes", stringArgumentCaptor.getValue());
}
}
Run Code Online (Sandbox Code Playgroud)
错误堆栈跟踪
Wanted but not invoked:
vote.getResult(<Capturing argument>);
-> at VoteTest.isEligibleToVote_test(VoteTest.java:24)
However, there was exactly 1 interaction with this mock:
vote.isEligibletoVote(18);
-> at VoteTest.isEligibleToVote_test(VoteTest.java:23)
Wanted but not invoked:
vote.getResult(<Capturing argument>);
-> at VoteTest.isEligibleToVote_test(VoteTest.java:24)
However, there was exactly 1 interaction with this mock:
vote.isEligibletoVote(18);
-> at VoteTest.isEligibleToVote_test(VoteTest.java:23)
at VoteTest.isEligibleToVote_test(VoteTest.java:24)
Run Code Online (Sandbox Code Playgroud)
我知道 vote 是模拟的,但我想知道如何调用 vote.iseligibleTovote(18) 并从 if 和 else 条件内部获取 getResult 的参数
| 归档时间: |
|
| 查看次数: |
14875 次 |
| 最近记录: |