我有这样的方法声明
private Long doThings(MyEnum enum, Long otherParam);
这个枚举
public enum MyEnum{
VAL_A,
VAL_B,
VAL_C
}
Run Code Online (Sandbox Code Playgroud)
问题:如何模拟doThings()通话?我无法匹敌MyEnum.
以下不起作用:
Mockito.when(object.doThings(Matchers.any(), Matchers.anyLong()))
.thenReturn(123L);
Run Code Online (Sandbox Code Playgroud) 我需要模拟以下枚举:
public enum PersonStatus
{
WORKING,
HOLIDAY,
SICK
}
Run Code Online (Sandbox Code Playgroud)
这是因为在我正在测试的以下类中使用了它:
被测课程:
public interface PersonRepository extends CrudRepository<Person, Integer>
{
List<Person> findByStatus(PersonStatus personStatus);
}
Run Code Online (Sandbox Code Playgroud)
这是我当前的测试尝试:
当前测试:
public class PersonRepositoryTest {
private final Logger LOGGER = LoggerFactory.getLogger(PersonRepositoryTest.class);
//Mock the PersonRepository class
@Mock
private PersonRepository PersonRepository;
@Mock
private PersonStatus personStatus;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
assertThat(PersonRepository, notNullValue());
assertThat(PersonStatus, notNullValue());
}
@Test
public void testFindByStatus() throws ParseException {
List<Person> personlist = PersonRepository.findByStatus(personStatus);
assertThat(personlist, notNullValue());
}
}
Run Code Online (Sandbox Code Playgroud)
产生以下错误:
错误:
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class …Run Code Online (Sandbox Code Playgroud)