我正在编写一个CustomerHelper的junit,它在内部调用AccountHelper对象的方法。 CustomerHelper正在创建
AccountHelper对象在其方法之一中具有new运算符。现在,如果我想模拟AccountHelper对象,有什么办法可以做到?

如果此依赖项(在这种情况下为AccountHelper)将由某个设置器或构造函数注入,则可以设置MockAccountHelper.Right吗?
但是,当我们使用New运算符创建依赖项时,有什么方法可以进行模拟?

第二个问题:-无论如何,我们是否可以使用核心Java库来模拟静态方法而无需使用Power / Easy Mock?即使我进行了电源模拟,也想简单地了解它在内部的作用吗?

最佳答案

JMockit使您可以轻松模拟静态方法和内部构造的对象。

您将执行以下操作:

@Test
public void testWhatever() {
    new Expectations() {
        AccountHelper accountHelper;
        {
            new AccountHelper();
            accountHelper.someMethod();
    }}
    objectUnderTest.doWhatever();
}


我认为核心Java库中没有内置的方法可以模拟静态方法。我也不确定内部到底发生了什么,但是我认为JMockit会进行某种字节码级别的修补来动态替换类。

07-24 17:50