ableResourceBundleMessageSource在

ableResourceBundleMessageSource在

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

我收到此错误:

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接口,但无济于事。

最佳答案

正如David Wallace所说:

Mockito无法存根“ final”方法,并且由于“ getMessage”被声明为final,因此您无法对其进行模拟。

07-26 02:28