相关疑难解决方法(0)

如何让方法返回传递给它的参数?

考虑一个方法签名,如:

public String myFunction(String abc);
Run Code Online (Sandbox Code Playgroud)

Mockito可以帮助返回方法收到的相同字符串吗?

java mockito

622
推荐指数
10
解决办法
32万
查看次数

Mockito:使用"thenReturn"中的方法返回模拟不起作用

我遇到了我认为可能是Mockito的错误,但是想知道是否有其他人可以解释为什么这个测试不起作用.

基本上,我有两个对象,如下所示:

public class FirstObject {
    private SecondObject secondObject;
    public SecondObject getSecondObject() { return secondObject; }
}

public class SecondObject {
    private String name;
    public String getName() { return name; }
}
Run Code Online (Sandbox Code Playgroud)

第一个对象通过注释和before方法进行模拟:

@Mock
FirstObject mockedFirstObject;

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
}
Run Code Online (Sandbox Code Playgroud)

第二个对象在一个方法中被模拟:

public SecondObject setupMockedSecondObject() {
    SecondObject secondObject = Mockito.mock(SecondObject.class);
    Mockito.when(secondObject.getName()).thenReturn("MockObject");
    return secondObject;
}
Run Code Online (Sandbox Code Playgroud)

thenReturn包含对此方法的直接调用以设置并获取第二个对象的模拟时,它将失败:

@Test
public void notWorkingTest() {
    Mockito.when(mockedFirstObject.getSecondObject()).thenReturn(setupMockedSecondObject());
    Assert.assertEquals(mockedFirstObject.getSecondObject().getName(), "MockObject");
}
Run Code Online (Sandbox Code Playgroud)

但是,当同一方法返回的模拟被分配给一个局部变量时thenReturn,它会起作用:

@Test
public void workingTest() {
    SecondObject mockedSecondObject = setupMockedSecondObject(); …
Run Code Online (Sandbox Code Playgroud)

java unit-testing mocking mockito

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

标签 统计

java ×2

mockito ×2

mocking ×1

unit-testing ×1