【发布时间】:2016-03-16 06:40:43
【问题描述】:
我有一个简单的类Foo 被嘲笑:
public class Foo {
private String name;
public Foo() {
}
public Foo(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
在我的单元测试代码中,我使用Mockito 模拟它。
Foo mockedFoo = Mockito.mock(Foo.class);
mockedFoo.setName("test");
// name is null
String name = mockedFoo.getName();
我在模拟对象中设置了name,但是当我调用 getter 获取名称时,它返回 null。
这是 Mockito 特有的问题,还是模拟对象无法设置值的约定?这是为什么?模拟对象下面发生了什么?
【问题讨论】:
-
when(mockedFoo.getName()).thenReturn("test");. -
@Tom ,我知道这一点,但我想知道为什么我不能直接在模拟对象上设置值,我不是在问如何存根函数返回。
-
因为它是一个模拟对象,它的目的不是存储东西。如果您想这样做,请创建您自己的实例。
-
@Tom,所以现在你回答了我的预期,所以,模拟对象失去了类中设计的功能是一个“约定”。
-
约定?我称之为定义。
标签: java unit-testing mocking mockito