当前位置:  开发笔记 > 编程语言 > 正文

如何模拟对象构造?

如何解决《如何模拟对象构造?》经验,为你挑选了1个好方法。

有没有办法在Java中使用JMock模拟对象构造?

例如,如果我有这样的方法:

public Object createObject(String objectType) {
    if(objectType.equals("Integer") {
        return new Integer();
    } else if (objectType.equals("String") {
        return new String();
    }
}

...有没有办法模拟测试方法中对象构造的期望?

我希望能够对某些构造函数被调用的期望,而不是额外的代码来检查类型(因为它不会像我的例子那样复杂和简单).

所以代替:

assertTrue(a.createObject() instanceof Integer);

我可以期待某个构造函数被调用.只是为了使它更清洁,并以更易读的方式表达实际测试的内容.

请原谅这个简单的例子,我正在处理的实际问题有点复杂,但是期望会简化它.


更多背景:

我有一个简单的工厂方法,它创建包装器对象.被包装的对象可能需要在测试类中难以获得的参数(它是预先存在的代码),因此很难构造它们.

也许接近我实际想要的是:有没有办法一次性模拟整个类(使用CGLib),而没有指定每个方法来存根?

所以mock被包装在一个构造函数中,所以很明显可以在它上面调用方法,JMock是否能够动态模拟每个方法?

我的猜测是否定的,因为那会非常复杂.但是知道我正在咆哮错误的树也很有价值:-)



1> sblundy..:

我唯一能想到的是在工厂对象上创建create方法,而不是模拟.

但是在模拟构造函数调用方面,没有.模拟对象预先假定对象的存在,而构造函数预先假定对象不存在.至少在java中,分配和初始化一起发生.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有