I have this simple test, it isn’t even a test as I’m simply trying to mock the messagesource.
I’m getting this error:
org.springframework.context.NoSuchMessageException: No message found under code '' for locale 'null'.
Can anyone else verify this behavior?
This is a minimum spring boot skeleton test I set up because ReloadableResourceBundleMessageSource didn’t work in another project, so I thought I’ll just try it in the smallest unit possible.
@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");
}
}
This is the error I get:
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)
It seems to me that it’s not able to mock it properly. I’ve also tried to mock the MessageSource interface to no avail.
Advertisement
Answer
As David Wallace said:
Mockito can’t stub “final” methods, and as ‘getMessage’ is declared final you can’t mock it.