我有這個簡單的測試,它甚至不是一個測試,因爲我只是試圖模擬消息源。Mockito和ReloadableResourceBundleMessageSource不能很好地結合在一起?
我得到這個錯誤:
org.springframework.context.NoSuchMessageException: No message
found under code '' for locale 'null'.
可誰都驗證此行爲?
這是我設置的最小彈簧引導骨架測試,因爲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
接口無濟於事。
我不知道你的問題是什麼,但爲什麼getMessage是不可能存在的,因爲它是'AbstractMessageSource'中聲明的'final',它是'ReloadableResourceBundleMessageSource'的超類。 Mockito不能殘缺最終的方法。 –
謝謝,這解釋了它! – OddBeck