4

無効にする方法@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;

これは回避策ですか?

4

1 に答える 1