首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.lang.AssertionError:即使在将内容类型设置为json/application之后也不设置内容类型

java.lang.AssertionError:即使在将内容类型设置为json/application之后也不设置内容类型
EN

Stack Overflow用户
提问于 2016-05-25 22:15:35
回答 3查看 9K关注 0票数 8

以前有人问过这个问题,我已经尝试过他们的解决方案,但这对我不起作用,我正在使用MockMvc来测试rest调用的内容类型。我得到了一个例外:

java.lang.AssertionError:内容类型未设置

当我使用produces属性在我的搜索方法中设置它时。

这是我初始化模拟的方法:

代码语言:javascript
运行
复制
@Before
public void init() {
    MockitoAnnotations.initMocks(this);
    ReflectionTestUtils.setField(restController, "luceneSearchEnabled", true);
    mockMvc = standaloneSetup(restController).build();
}

这是我的测试方法:

代码语言:javascript
运行
复制
@Test
public void pmmSearchContentTypeTest() throws Exception { 
    mockMvc
          .perform(get("/api/v1/pmm").contentType(MediaType.APPLICATION_JSON))
          .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON_VALUE)
          .andReturn();
}

这是我的搜索方法,我在这里设置内容类型:

代码语言:javascript
运行
复制
@RequestMapping(value = "/api/" + REST_API_VERSION + "/" + ONE_INTERFACE, method = RequestMethod.GET, produces ={MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
public String pmmSearch() { ... }

我不知道这是怎么回事。

EN

回答 3

Stack Overflow用户

发布于 2016-10-23 13:10:13

我也遇到了同样的错误,并发现这个控制器方法的模拟服务返回null。更改模拟服务方法以返回任何()输入的值,并测试此方法以消除此错误。

代码语言:javascript
运行
复制
when(service.method(any())).thenReturn(someElement);

someElement之前为null,导致此错误情况。

票数 4
EN

Stack Overflow用户

发布于 2016-06-24 03:00:44

我自己想出来的

而不是在这里使用retcontroller的模拟对象。

代码语言:javascript
运行
复制
mockMvc = standaloneSetup(restController).build();

我不得不用一个真正的物体

代码语言:javascript
运行
复制
mockMvc = standaloneSetup(new RestController()).build();

为了避免弹簧验证错误,我必须在这里使用完整的路径。

代码语言:javascript
运行
复制
mockMvc
.perform(get("/api/v1/pmm/search{}").contentType(MediaType.APPLICATION_JSON))
票数 1
EN

Stack Overflow用户

发布于 2017-12-30 19:17:05

如果响应返回null,您可以得到该错误,如@stuti。现在就发生在我身上。

案例:在我的测试中,我向控制器发送了一个json,但是我用来生成模拟响应的对象并没有实现相等/hashCode。因此,它将永远不会与收到的json相匹配。

代码语言:javascript
运行
复制
@RequestBody anObject

mock.theMethod(anObject).thenReturn(theResponse)

anObject必须具有等于/hashCode才能进行比较

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

https://stackoverflow.com/questions/37448548

复制
相关文章

相似问题

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