gpt4 book ai didi

spring-boot - 如何在测试中禁用 JsonProperty 或 JsonIgnore

转载 作者:行者123 更新时间:2023-12-04 13:47:58 26 4
gpt4 key购买 nike

如果有办法禁用 @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)@JsonIgnore在测试?

我正在尝试测试我的 createUser()但我需要 user.getPassword()当我解析我的 User 时启用方法目的。

如果我评论 @JsonProperty行它有效,但如果我这样做,密码字段将返回 GET /users or GET /users/{id}方法。

这是我的测试

@Test
public void createUser() throws Exception {
User user = UserFactory.newUser();
String userJson = objectMapper.writeValueAsString(user);

LOGGER.info("User to register: " + userJson);

mockMvc.perform(post("/users")
.content(userJson)
.contentType(contentType))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.id", is(notNullValue())));
}

创建新用户的方法:
public static User newUser() {
Fairy fairy = Fairy.create();
Person person = fairy.person();

User user = new User();
user.setName(person.getFirstName());
user.setLastName(person.getLastName());
user.setEmail(person.getEmail());
user.setUsername(person.getUsername());
user.setPassword(person.getPassword());
user.setSex(person.isMale() ? User.Sex.MALE : User.Sex.FEMALE);
user.setPhone(person.getTelephoneNumber());
user.setCountry(person.getAddress().getCity());

return user;
}

这是序列化后得到的json User对象与 ObjectMapper :
{
"createdAt" : null,
"updatedAt" : null,
"name" : "Jasmine",
"lastName" : "Neal",
"email" : "jasmineneal@yahoo.com",
"username" : "jasminen",
"sex" : "FEMALE",
"phone" : "321-104-989",
"country" : "San Francisco"
}

UserController.class 方法
@RequestMapping(method = RequestMethod.POST)
public ResponseEntity store(@Valid @RequestBody User user) {
userService.store(user);
return new ResponseEntity<Object>(user, HttpStatus.CREATED);
}

User.class 属性
@Column(name = "password", length = 100)
@NotNull(message = "error.password.notnull")
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) // If I comment this, it works
private String password;

这是一个解决方法吗?

最佳答案

您可以通过添加以下行来禁用所有 Jackson 注释:

objectMapper.disable(MapperFeature.USE_ANNOTATIONS);
有关更多信息,您可以查看此 link .
在您的情况下,这应该有效:
@Test
public void createUser() throws Exception {
User user = UserFactory.newUser();
objectMapper.disable(MapperFeature.USE_ANNOTATIONS);
String userJson = objectMapper.writeValueAsString(user);

LOGGER.info("User to register: " + userJson);

mockMvc.perform(post("/users")
.content(userJson)
.contentType(contentType))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.id", is(notNullValue())));
}

关于spring-boot - 如何在测试中禁用 JsonProperty 或 JsonIgnore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42472525/

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