首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为Json.mapper()Json.mapper().constructType(类型)编写.constructType()

如何为Json.mapper()Json.mapper().constructType(类型)编写.constructType()
EN

Stack Overflow用户
提问于 2022-09-16 05:59:42
回答 1查看 75关注 0票数 1

有人能告诉我如何模拟和编写Mockito.when()方法吗?

代码语言:javascript
复制
@Override
public Property resolveProperty(Type type, ModelConverterContext context, Annotation[] annotations, Iterator<ModelConverter> chain) {
   JavaType jType = Json.mapper().constructType(type);
   ...
}

我写

代码语言:javascript
复制
when(Json.mapper()).thenReturn(objectMapper);
when(objectMapper.constructType(type)).thenReturn(jType);

我的错误越来越少

当()需要一个参数时,org.mockito.exceptions.misusing.MissingMethodInvocationException:必须是‘在模拟上调用一个方法’。例如: when(mock.getArticles()).thenReturn(articles); 此外,可能会出现此错误,因为:

  • 您可以使用以下任何一种方法: final/private/equals()/hashCode()方法。这些方法不能被删减/验证。
  • 在内部,不要在模拟上调用方法,而是在其他对象上调用方法。
  • 模拟类的父类不是公共的。这是模拟引擎的一个限制。
EN

回答 1

Stack Overflow用户

发布于 2022-09-16 06:26:47

你是在模仿静态方法。这是不鼓励的,但如果您仍然想这样做,则需要使用Mockito的3.4.0或更高版本的mockStatic法 (应该使用mockito-inline依赖项)。

代码语言:javascript
复制
var objectMapper = mock(ObjectMapper.class);
when(objectMapper.constructType(type)).thenReturn(jType);
try (var mocked = mockStatic(Json.class)) {
    mocked.when(Json::mapper).thenReturn(objectMapper);
    // execute the tested code
 }

参见这里的多个示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73740464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档