我尝试在我的应用程序中集成Unittests,但在测试PUT(JSON)REST API时失败。
测试代码:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class EventOrderRestTest {
@Autowired
private MockMvc mvc;
@Autowired
ObjectMapper objectMapper;
private Integer id;
@Test
public void a_saveNewEventOrder() throws Exception {
EventOrder o = new EventOrder();
o.setPlz(54321);
this.id = Integer.parseInt(
mvc.perform(put("/order")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(o))
.accept(MediaType.TEXT_PLAIN))
.andExpect(status().isOk())
.andReturn().getResponse().getContentAsString()
);
}
我的应用程序中没有其他测试配置。
因此,在运行API并手动调用它时,它会返回代码200和新的ObjectId。
当测试在正文中以相同的值运行时,它返回代码406。
它有什么问题吗?我错过了什么?
答案 0 :(得分:1)
406 HTTP状态 - What is "406-Not Acceptable Response" in HTTP?
也许这就是问题的原因。
class aClass<T>
{
public void Compare_Generics(T[] m)
{
var result = new List<T>();
var left = new List<T>();
var right = new List<T>();
for(int i = 0; i < m.Length; i++)
{
if(i < m.Length/2)
left.Add(m[i];
else
right.Add(m[i]);
}
if(left[0] <= right[0])//This is the no no line that the compiler does not like
{
result.Add(left[0]);
}
}
}
答案 1 :(得分:1)
如果你想获得纯文本,控制器中负责put / order端点的方法应该返回String。该方法应如下所示:
@PutMapping(path="/order")
public @ResponseBody String putOrder() {
...
return "result";
}