gpt4 book ai didi

java - Mockito 和 ReloadableResourceBundleMessageSource 不能很好地结合在一起吗?

转载 作者:行者123 更新时间:2023-11-30 06:56:50 24 4
gpt4 key购买 nike

我有这个简单的测试,它甚至不是测试,因为我只是想模拟消息源。

我收到这个错误:

org.springframework.context.NoSuchMessageException: No message 
found under code '' for locale 'null'.

其他人可以验证此行为吗?

这是我设置的最小 spring boot 骨架测试,因为 ReloadableResourceBundleMessageSource 在另一个项目中不起作用,所以我想我会尽可能以最小的单元尝试它。

@RunWith(MockitoJUnitRunner.class)
public class DemoApplicationTests {

@Test
public void contextLoads() {

ReloadableResourceBundleMessageSource messageSource =
mock(ReloadableResourceBundleMessageSource.class);
when(
messageSource.getMessage(
anyString(),
any(Object[].class),
any(Locale.class)
)
).thenReturn("returnValue");

System.out.println("test");

}
}

这是我得到的错误:

org.springframework.context.NoSuchMessageException: No message 
found under code '' for locale 'null'.

at org.springframework.context.support.AbstractMessageSource.getMessage(
AbstractMessageSource.java:159)
at com.example.DemoApplicationTests.contextLoads(
DemoApplicationTests.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at ....
....
....
....
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(
JUnit4IdeaTestRunner.java:117)
at com.intellij.rt.execution.junit.JUnitStarter.
prepareStreamsAndStart(
JUnitStarter.java:234)
at com.intellij.rt.execution.junit.JUnitStarter.main(
JUnitStarter.java:74)

在我看来,它无法正确模拟它。我还尝试模拟 MessageSource 接口(interface),但无济于事。

最佳答案

正如大卫华莱士所说:

Mockito 无法 stub “最终”方法,并且由于“getMessage”被声明为 final方法,因此您无法模拟它。

关于java - Mockito 和 ReloadableResourceBundleMessageSource 不能很好地结合在一起吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com