gpt4 book ai didi

java - 如何在 mockmvc 中将模拟对象作为 JSON 发送

转载 作者:太空狗 更新时间:2023-10-29 23:01:47 26 4
gpt4 key购买 nike

我想通过 MockMvc 在 Controller 中发送一个内容类型为 JSON 的模拟对象。但是当我尝试序列化模拟时,错误是:

java.lang.UnsupportedOperationException: Expecting parameterized type, got interface org.mockito.internal.MockitoInvocationHandler.
Are you missing the use of TypeToken idiom?

我的代码如下:

@Test
public void testSomething(){

String xyz = "";
Integer i = 10;
SomeClass inst = mock(SomeClass.class, withSettings().serializable());
when(inst.getProperty1()).then(xyz);
when(inst.getProperty2()).then(i);

Gson gson = new Gson();
String json = gson.toJson(inst); // this is creating error

this.mockmvc.perform(put("/someUrl/").contentType(MediaType.JSON).content(json)).andExpect(status().isOk());
}

谁能告诉我我错过了什么?

最佳答案

我建议您创建一个 stub SomeClass 返回已知值的 getProperty1()getProperty2() 方法。根据 SomeClass 的实现方式,您可以直接创建它的 new 实例,子类化并重写一些方法,如果它是一个接口(interface),则创建一个匿名内部类,等等.

@Test
public void testSomething(){

String xyz = "";
Integer i = 10;

// alt 1:
SomeClass stub = new SomeClass(xyz, i);

// alt 2:
SomeClass stub = new StubSomeClass(xyz, i); // StubSomeClass extends SomeClass

// alt 3:
SomeClass stub = new SomeClass() {
@Override
String getProperty1() {
return xyz;
}
@Override
Integer getProperty2() {
return i;
}
}

Gson gson = new Gson();
String json = gson.toJson(stub);

this.mockmvc.perform(put("/someUrl/")
.contentType(MediaType.APPLICATION_JSON).content(json))
.andExpect(status().isOk());
}

关于java - 如何在 mockmvc 中将模拟对象作为 JSON 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24199393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com