Jmockit StrictExpects嘲笑未锁定的静态方法



我是jmockit和StrictExperts的新手。在StrictExpects中,我记录了非模拟类的静态方法的调用和返回值,并且该静态方法被正确地模拟了,但我不知道为什么会发生这种情况。我认为,既然这个类没有被嘲笑,那么它的调用和返回值是如何被记录在StrictExpects中的。我的代码看起来类似于下面的

@Test
public void test() {
new StrictExpectations () {{
DummyClass.someStaticMethod(anyInt);
result = 10;
}};

assertEquals(10, DummyClass.someStaticMetho(3));
}

我的问题是,即使DummyClass没有被定义为一个模拟类(类似于@mocked DummyCClass d(,我们如何能够记录它的调用和结果。

根据文档(https://jmockit.github.io/tutorial/Mocking.html#injectable):"[S] static方法和构造函数也被排除在嘲笑之外。毕竟,静态方法不与类的任何实例相关联,而构造函数只与新创建的(因此不同(实例相关联">

因此,您不必为了修改静态方法而显式地Mock类。只需将静态方法放置在Expectings块中(以正常方式(,您就可以使JMockit覆盖默认实现(这将是显而易见的意图(。

最新更新