我正在使用Mockito进行测试,能够模拟方法并验证是否抛出任何异常,如何在测试类中声明变量的值
@Service
public class TaskImpl implements Task {
@Autowired
private Utils utils;
@Override
public void doSomeTask(String input, String oldId, String newId) {
Long id = utils.getId(input);
if(id == null) {
throw new CustomException(CustomExceptionCode.ID_DOES_NOT_EXIST);
}
String code = utils.findCode(id, newId);
if(StringUtils.isEmpty(code)) {
throw new CustomException(CustomExceptionCode.NO_CODE_FOR_ID);
}
// some more stuff
}
}
@PowerMockIgnore("org.jacoco.agent.rt.*")
@RunWith(PowerMockRunner.class)
@PrepareForTest({TaskImpl.class})
public class TaskImplTest {
@InjectMocks
private final TaskImpl taskImpl = PowerMockito.spy(new TaskImpl());
@Mock
private Util util;
@Rule
public final ExpectedException exception = ExpectedException.none();
@Test
public void doSomeTaskThrowsException() {
when(util.getId(anyString())).thenReturn(null);
exception.expect(CustomException.class);
taskImpl.doSomeTask(anyString(), anyString(), anyString());
}
@Test
public void doSomeTastCodeSuccess() {
when(util.getId(anyString())).thenReturn(1L);
taskImpl.doSomeTask(anyString(), anyString(), "new_id");
// I want to check here how to check {code} value is actually what I am expecting
// Not only string but I want to check other types too
}
}
所以在第二次测试中,我想Assert.assertEquals("expected", code);
我可以做的一种方法是
String code = util.findCode(id, newId);
然后检查
Assert.assertEquals("expected", code);
是正确的还是有其他检查变量的方法。