【问题标题】:Mock a new object creation模拟一个新的对象创建
【发布时间】:2011-01-14 05:08:02
【问题描述】:

我正在使用 EasyMocks。
在方法内部创建了一个新对象。并在该对象上调用一个方法,该方法返回一个地图。如下图

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

那时我想返回一个自定义地图。我该怎么做。
谢谢。

【问题讨论】:

  • 让你“有趣”的对象成为你的测试方法的依赖项并存根它。

标签: unit-testing mocking easymock


【解决方案1】:

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

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

test() {

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-26
    • 2019-12-24
    • 1970-01-01
    • 2020-02-16
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多