gpt4 book ai didi

java - 我如何在 2.7.x 中使用 Mockito.doReturn

转载 作者:行者123 更新时间:2023-11-29 08:37:22 25 4
gpt4 key购买 nike

Mockito 版本:v2.7.5/19

异常:

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

这是我的代码:

@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 ) );

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

Mockito.when( dao.getNextCodeIntegerFromSequence( ltc1  ) ).thenReturn( 533965 );

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

最佳答案

你很接近。尝试使用一些不同的语法:

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

这是我在 Mockito Stubbing 上写的一篇文章如果您需要进一步阅读。

关于java - 我如何在 2.7.x 中使用 Mockito.doReturn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42931877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com