無効にする方法@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;
}
User
これは、オブジェクトを次のようにシリアル化した後に取得した jsonObjectMapper
です。
{
"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;
これは回避策ですか?