首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在2.7.x中使用Mockito.doReturn

如何在2.7.x中使用Mockito.doReturn
EN

Stack Overflow用户
提问于 2017-03-21 15:46:04
回答 1查看 818关注 0票数 1

莫基托版本:v2.7.5/19

例外情况:

代码语言:javascript
复制
org.mockito.exceptions.misusing.UnfinishedStubbingException: 
Unfinished stubbing detected here:
-> at com.mckesson.dex.dao.code.CodeDaoMockTest.testExcluded(CodeDaoMockTest.java:33)

E.g. thenReturn() may be missing.
Examples of correct stubbing:
    when(mock.isOk()).thenReturn(true);
    when(mock.isOk()).thenThrow(exception);
    doThrow(exception).when(mock).someVoidMethod();
Hints:
 1. missing thenReturn()
 2. you are trying to stub a final method, which is not supported
 3: you are stubbing the behaviour of another mock inside before 'thenReturn' instruction if completed

这是我的密码:

代码语言:javascript
复制
@RunWith(MockitoJUnitRunner.class)
public class CodeDaoMockTest
{
    @Mock( name = "entityManager") private HibernateEntityManager entityManager;
    @Spy @InjectMocks
    private CodeDao dao;

    @Test
    public void testExcluded() throws Exception
    {

        LabTestClassification ltc1 = new LabTestClassification();
        LabTestClassification ltc2 = new LabTestClassification();

        Mockito.doReturn( 533965, 533966)
            .when( dao.getNextCodeIntegerFromSequence( ltc1  ) );

值得注意的是,如果我写这个:

代码语言:javascript
复制
Mockito.when( dao.getNextCodeIntegerFromSequence( ltc1  ) ).thenReturn( 533965 );

我在调用entityManager时得到一个空指针。我的理解是,如果我使用doReturn,那么实际的getNext...将永远不会被调用,这就是目标。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-21 15:49:21

你们关系很好。尝试使用一些不同的语法:

代码语言:javascript
复制
Mockito.doReturn(533965).when(dao).getNextCodeIntegerFromSequence(ltc1);

这是我在莫奇托上写的一篇文章,如果您需要进一步阅读的话。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42931877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档