模拟一个新的对象创建
问题描述:
我正在使用EasyMocks。
在一个方法里面有一个新的对象被创建。并在该对象上调用返回地图的方法。如下所示模拟一个新的对象创建
test(){
Fun f= new Fun();
Map m =f.getaMap();
}
我想在当时返回一个自定义的Map。我该怎么做。
谢谢。
答
我从你的代码猜测你已经给我们一个测试方法,在这个方法中你测试Fun
并查看Fun
产生的Map
。
依赖注入MapFactory
它创建Map
为Fun
。我不确定EasyMock的语法,所以mockMapFactory
这里是嘲笑的对象,它将有一个方法来为你创建一个地图。模拟该方法来生成地图,然后调用你的类中的方法而不是使用new
。
test() {
Fun f= new Fun(mockMapFactory);
Map m =f.getaMap();
}
看看工厂设计模式,它是让你避免调用new
,这样就可以模拟对象的创建(和对象本身,如果需要)的一个真正好方法。这也意味着你的班级不再负责决定它创建什么样的对象。
当您测试工厂时,您将无法在其工厂内创建地图。没关系。要么通过检查来检验,要么只是检查你是否得到了正确的对象。
尝试mockito ... :) – 2011-01-13 11:35:10