如何使用Mockito模拟构造函数

问题描述 投票:0回答:1

我有一个关于mockito功能之一的问题。在几个博客上,我已经读过,模拟构造函数是不可能通过mockito。

对于我的一个测试用例,目前它是通过powermockito完成的,但我想删除它由于一些性能问题。

目前代码看起来像这样:

实际课程:

public class TestClass {
    private ClassB classB;

    public TestClass(ClassB classB) {
       this.classB = classB;
    }
}

在我的测试类中,我有这样的代码:

TestClass testClass = Mockito.mock(TestClass.class);
PowerMockito.whenNew(TestClass.class).withArguments(this.classB)
    .thenReturn(testClass);

所以任何人都可以建议我,有没有其他方式可以通过mockito实现同样的事情?同样在一些博客上,我发现使用类的构造函数注入一个公共方法,然后模拟该方法可以解决问题。但想知道要分析的所有其他选项。

谢谢

- 山姆

mockito junit4 powermock powermockito spy
1个回答
2
投票

我不确定这是否可以帮到你。

class MyClass {

            private final MySecondClass clazz;

            MyClass(MySecondClass clazz) {
                this.clazz = clazz;
            }

            public boolean executeDoSomething() {
                return clazz.doSomething();
            }
        }

在测试中你可以模拟内部类:

@RunWith(MockitoJUnitRunner.class)
        public class MyClassTest {
            @Test
            public void MyClassTest() {
                MySecondClass mockedPerformer = Mockito.mock(MySecondClass.class);
                MyClass clazz = new MyClass(mockedPerformer);
                clazz.executeDoSomething();
            }
        }

我希望这可以帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.