[英]Define expectations for public final instance variable
我是单元测试的新手,并且遇到了jMock的问题,我似乎无法弄清楚。 我有一个公共的最终实例变量,需要为它定义一个期望值,但是我无法使其正常工作。 如果我为该变量创建一个吸气剂,它将起作用,但是我宁愿不必为了使单元测试工作而创建一堆吸气剂。 任何有关如何执行此操作的帮助将不胜感激。 这是一些说明我正在尝试做的代码:
public class Main {
private SimpleObject simpleObject;
public Main(SimpleObject o){
this.simpleObject = o;
}
public int iDontWork(){
return simpleObject.myList.size();
}
public int iWork(){
return simpleObject.getMyList().size();
}
}
我的测试:
@RunWith(JMock.class)
public class MainTest {
Mockery context = new Mockery() {{
setImposteriser(ClassImposteriser.INSTANCE);
}};
@Mock
SimpleObject simpleObject;
private Main main;
@Before
public void setup(){
main = new Main(simpleObject);
}
@Test
public void itWorks() {
context.checking(new Expectations() {{
oneOf(simpleObject).getMyList();
will(returnValue(new ArrayList<String>(Arrays.asList("Hey"))));
}});
int i = main.iWork();
assertEquals(1, i);
}
@Test
public void itDoesntWork() {
context.checking(new Expectations() {{
oneOf(simpleObject).myList.size(); will(returnValue(1));
}});
int i = main.iDontWork();
assertEquals(1, i);
}
}
SimpleObject:
public class SimpleObject {
public final List<String> myList;
public SimpleObject(){
myList = Collections.unmodifiableList(Arrays.asList("Hey"));
}
public List<String> getMyList(){
return myList;
}
}
模拟对象实现了真实对象的方法。 它没有真实对象的字段(即使这些字段是公共的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.