EasyMock 缺少行为,即使它已定义

EasyMock missing behavior even though it's defined

无论我做什么,在尝试模拟方法时都会收到以下错误

java.lang.IllegalStateException: missing behavior definition for the preceding method call: ConfigurationSection.get("country-language") Usage is: expect(a.foo()).andXXX()

我的测试代码:

EasyMock.expect(section.getString("country-language")).andReturn("US");

LocaleManager.updateLocale(section, Collections.emptyList());
EasyMock.expectLastCall();

replayAll();

Assert.assertEquals("Test", TranslatedMessage.translate("test"));
verifyAll();

为模拟 class 调用 expect andReturn,静态 upateLocale 方法首先调用该方法。 奇怪的是这个测试工作正常:

EasyMock.expect(section.getString("country-language")).andReturn("US");
replayAll();

Assert.assertEquals("US", section.getString("country-language"));
verifyAll();

但是从外部方法调用它不起作用。

你的模拟说:

EasyMock.expect(section.getString("country-language"))

错误说:

ConfigurationSection.get("country-language")

你不是在嘲笑get("country-language")。你在嘲笑 getString("country-language").

无关,但 verify 是维护的噩梦,通常应避免。这将测试代码直接与实现联系起来。如果可能的话,测试应该关注输入和输出。