当前位置: 首页 > 知识库问答 >
问题:

禁止在运行时通过Rest Assured发送空字段

廖永长
2023-03-14

假设我得到了以下模型:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class MyModel {
    private Object field; //required field
    private Object anotherField; //optional field
}

现在我想验证我的RESTendpoint是否正常工作(只需要必填字段),所以我想执行以下2个请求并检查它们是否导致200:

{
    "field": "someValue",
    "anotherField": null
}

和:

{
    "field": "someValue"
}

对于第一个,代码很简单:

MyModel payload = MyModel.builder().field("someValue").build();
when().contentType(ContentType.JSON).body(payload).put("http://my-service.com/myendpoint/").then().statusCode(200);

但第二个开始有点糟糕了。如果我不为anotherField提供值,默认情况下它将为空,这就是通过REST(第一个TC)发送的内容。但现在我不想发送这个字段。换句话说:

共有3个答案

张淳
2023-03-14

问题就在这里:私有对象另一个字段;可选字段。

您尚未将此属性定义为可为空的类型。根据您的代码,它是必填字段,而不是可为空的类型。您必须添加数据批注才能将其定义为可为 null 的类型。

督弘化
2023-03-14

问题已解决。经过一点调查,我发现了解决这个问题的两种方法:

> < li>

自定义restassured使用的映射器:如何在放心中访问底层Jackson ObjectMapper?

发送前将我的对象序列化为字符串

我选择了第二个选项:

String payload;
//send model WITHOUT nulls
payload = new Gson().toJson(MyModel.builder().field("someValue").build());
when().contentType(ContentType.JSON).body(payload).put("http://my-service.com/myendpoint/").then().statusCode(200);

//send model WITH nulls
payload = new GsonBuilder().serializeNulls().create().toJson(MyModel.builder().field("someValue").build());
when().contentType(ContentType.JSON).body(payload).put("http://my-service.com/myendpoint/").then().statusCode(200);
西门嘉石
2023-03-14

如果您正在使用Jackson库:

@JsonInclude(Include.NON_NULL)

使用此注释,可以指定简单的排除规则以减少要写入的属性量

 类似资料:
  • 我有一个 这个数组由保存的字符串和核心数据组成。我想通过空投发送这个。我已经签出了,并且我试图通过以下方式发送它 这给了我以下错误“NSInvalidArgumentException”,原因是:“JSON写入(证书)中的类型无效” 我已经将数据转换为字符串,所以不确定我在这里错过了什么 我研究了NSInvalidArgumentException,原因:“JSON写入中的类型无效(u NSDat

  • 当我通过命令行运行此代码时,我得到了一个异常。当我通过Eclipse IDE运行它时,它运行得很好,没有异常。我不知道发生了什么,但它肯定在会话语句中得到了异常。 我得到的错误仅当它在命令行运行时: 你知道这是什么原因吗?

  • 问题内容: 您好,我尝试使用Java中的客户端-服务器类发送文件。由于某种原因,当调用发送文件的方法时,套接字关闭。这是代码: 和来自客户端的代码: 和我得到的错误消息:严重:null java.net.SocketException:套接字已关闭 我对此并没有真正的经验,所以如果有帮助的话会很棒。 问题答案: 该方法返回一个,代表它实际读取的字节数。不能保证从字节数组中读取所需的字节数。它通常会

  • 问题内容: 我想使用JavaScript中的方法发送一些变量和一个字符串。 我从数据库中获取字符串,然后将其发送到PHP页面。我正在使用一个对象。 问题在于该字符串多次包含该字符,PHP中的数组将其视为多个键。 我试着更换与与功能,但它似乎并没有做任何事情。 有人可以帮忙吗? javascript代码和字符串如下所示: 字符串是: 问题答案: 您可以使用encodeURIComponent()。

  • 我正试图通过Java的socket发送一个custome对象。我知道我需要将具有我需要发送的对象的类放在相同的包中,具有相同的serialVersionUID并实现Serializable。我已经这样做了,但我仍然不能通过套接字发送对象。我错在哪里了? 以下是客户端代码: 客户端中的类用户 发送user类对象的代码: 这里是服务器的代码: user类的代码:与客户端的user完全相同(我从客户端复

  • 如何通过Azure从我的UWP-App向不同设备上的应用程序的其他实例发送推送通知? 以下是注册设备以接收推送的说明。(这是可行的)第二部分是关于如何在控制台应用程序上发送推送(这也是可行的)https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-star