模拟一个新的对象创建

问题描述:

我正在使用EasyMocks。
在一个方法里面有一个新的对象被创建。并在该对象上调用返回地图的方法。如下所示模拟一个新的对象创建

test(){ 
    Fun f= new Fun(); 
    Map m =f.getaMap(); 
} 

我想在当时返回一个自定义的Map。我该怎么做。
谢谢。

+0

尝试mockito ... :) – 2011-01-13 11:35:10

我从你的代码猜测你已经给我们一个测试方法,在这个方法中你测试Fun并查看Fun产生的Map

依赖注入MapFactory它创建MapFun。我不确定EasyMock的语法,所以mockMapFactory这里是嘲笑的对象,它将有一个方法来为你创建一个地图。模拟该方法来生成地图,然后调用你的类中的方法而不是使用new

test() { 

    Fun f= new Fun(mockMapFactory); 
    Map m =f.getaMap(); 
} 

看看工厂设计模式,它是让你避免调用new,这样就可以模拟对象的创建(和对象本身,如果需要)的一个真正好方法。这也意味着你的班级不再负责决定它创建什么样的对象。

当您测试工厂时,您将无法在其工厂内创建地图。没关系。要么通过检查来检验,要么只是检查你是否得到了正确的对象。