当前位置:  开发笔记 > 编程语言 > 正文

如何让Mockito根据枚举返回不同的值?

如何解决《如何让Mockito根据枚举返回不同的值?》经验,为你挑选了1个好方法。

所以我试图模拟一个getPremium采用单个参数的方法,PanicLevel其中一个实例是一个enum.它需要根据PanicLevel传入的内容返回不同的double值.

如果我想按枚举值执行此操作,那么像thi这样的东西应该可行.

Mockito.when(mockData.getPremium(PanicLevel.NORMAL)).thenReturn(1.1);

但是每个枚举值需要一行.我宁愿做类似的事情:

Mockito.when(mockData.getPremium(anyPanicLevel())).thenReturn(premiums.get(passedInPanicLevel());

显然这是无效的...但类似的东西应该......

我找到了这个,但它使用了anyString某个方法: mockito返回值基于参数的属性

如何在不重复when每个键的情况下让Mockito执行此操作?



1> Andy Turner..:

你可以使用Answer:

Mockito.when(mockData.getPremium(Matchers.any(PanicLevel.class)))
    .thenAnswer(new Answer() {
        @Override
        public Double answer(InvocationOnMock arg0) throws Throwable {
          PanelLevel panicLevel = (PanicLevel) arg0.getArguments()[0];
          return premiums.get(panicLevel);
        }        
    });

仅供参考:anyString()可能只是Matchers.anyString().

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有