![](/img/trans.png)
[英]PowerMockito mocking static method throws UnfinishedStubbingException
[英]Mocking static method throws error with parameters
我有自定義 Log4j2 appender:
@Plugin(
name = "MyAppender",
category = "Core",
elementType = Appender.ELEMENT_TYPE)
public class MyAppender extends AbstractAppender {
private static final Logger LOGGER = LoggerFactory.getLogger(MyAppender.class);
private final Lock lock = new ReentrantLock();
private MyAppender(final String name, final Layout<? extends Serializable> layout ) {
super(name, null, layout, false, Property.EMPTY_ARRAY);
}
@Override
public void append(LogEvent event) {
....
}
@PluginFactory
public static MyAppender createAppender(
@PluginAttribute("name") String name,
@PluginElement("Layout") Layout<? extends Serializable> layout){
if (layout == null) {
layout = PatternLayout.createDefaultLayout();
}
return new MyAppender(name, layout);
}
}
我想模擬createAppenderMethod
:
try (MockedStatic<MyAppender> mocked = mockStatic(MyAppender.class)) {
MyAppender appender = Mockito.mock(MyAppender.class);
mocked.when(() -> MyAppender.createAppender("myAppender", Mockito.any(Layout.class))).thenReturn(appender);
....
}
然而這
org.mockito.exceptions.misusing.WrongTypeOfReturnValue:toString() 不能返回 MyAppender toString() 應該返回 String
我嘗試實現toString()
方法,但錯誤仍然存在。
如果你使用mocked.when(() -> MyAppender.createAppender("myAppender", Mockito.anyObject())).thenReturn(appender);
然后我收到:
org.mockito.exceptions.misusing.MissingMethodInvocationException:when() 需要一個必須是“模擬方法調用”的參數。 例如:when(mock.getArticles()).thenReturn(articles);
為什么會這樣? 嘲笑這個的正確方法是什么? 到目前為止,這種 mocking static 方法對我有用
根據我的理解 mocking static 方法不好遵循,因為它挑戰了設計級別的決策。 如果錯了,請有人指導我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.