相关疑难解决方法(0)

Mockito:如何匹配任何枚举参数

我有这样的方法声明

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)

java enums mockito

37
推荐指数
1
解决办法
3万
查看次数

使用Mockito模拟枚举?

我需要模拟以下枚举:

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)

java enums unit-testing final mockito

4
推荐指数
3
解决办法
3万
查看次数

标签 统计

enums ×2

java ×2

mockito ×2

final ×1

unit-testing ×1