gpt4 book ai didi

java - 使用 JerseyIncation 构建器测试放置格式错误的 json

转载 作者:行者123 更新时间:2023-12-02 03:03:31 26 4
gpt4 key购买 nike

我正在尝试编写集成测试,以确保我的 dropwizard 应用程序返回适当的错误代码。其中一种场景包括确保如果被 PUT 的对象不可反序列化,我会得到合理的错误响应。

我找不到使用 JerseyInvocable.Builder 来 PUT 格式错误的 JSON 实体的方法。创建实体的唯一方法似乎是拥有正确类型的对象,这显然会反序列化。我希望能够创建一个实体,其序列化值是我提供的任意字符串。

我尝试过放置错误类型的对象,但这并不能测试我想要测试的所有边缘情况。我还想避免创建许多与 API 期望的对象略有不同的类型。

任何人都可以建议一种实现我想要的方法吗?

更新:这是我目前正在使用的代码:

JerseyInitation.Builder 请求;//在其他地方初始化并且没有意义

is = new ClassPathResource(nameOfFileContainingWellFormedJson, MyEntityClsss.class).getInputStream();
实体 = Entity.entity(即 MediaType.APPLICATION_JSON);
请求.put(实体);
此响应应返回 200,现在返回 400。

is = new ClassPathResource(nameOfFileContainingBadlyFormedJson, MyEntityClsss.class).getInputStream();
实体 = Entity.entity(即 MediaType.APPLICATION_JSON);
请求.put(实体);
此响应返回 400,但在上面返回 200 之前,它没有出于正确的原因这样做。

最佳答案

您可以使用 Jersey Entity 类,用于任何 mime 类型的原始流。像这样的东西:

ByteArrayInputStream bais = new ByteArrayInputStream("{\"malformattedJson".getBytes());
builder.post(Entity.entity(bais, "application/json"));

或者从测试中的文件/类路径资源加载格式错误的 JSON,以放弃双引号转义 😉

关于java - 使用 JerseyIncation 构建器测试放置格式错误的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097266/

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