Как обработать ошибку сообщения в сущности при использовании @MockMvc

#java #spring #unit-testing #jpa #mockito

#java #spring #модульное тестирование #jpa #mockito

Вопрос:

Я использую тест @MockMvc в spring controller, но у меня есть вопрос. Как обработать сообщение об ошибке, когда метод MockMvc-теста не прошел.

Сущность:

 @Entity
@ApiModel(description = "All details about the Product")
public class Product {

@Id
@GeneratedValue(strategy = GenerationType.AUTO,generator = "system-uuid")
@GenericGenerator(name = "system-uuid",strategy = "uuid2")
private String id;
@NotNull(message = "name can not null")
@ApiModelProperty(notes = "The name is product")
private String name;
@ApiModelProperty(notes = "The type is product")
private String type;
@NotNull(message = "category can not null")
private String category;
private String description;
private Double prince;

public Product() {
}

public Product(String name, String type, String category, String description, Double prince) {
    this.name = name;
    this.type = type;
    this.category = category;
    this.description = description;
    this.prince = prince;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public String getCategory() {
    return category;
}

public void setCategory(String category) {
    this.category = category;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public Double getPrince() {
    return prince;
}

public void setPrince(Double prince) {
    this.prince = prince;
}

@Override
public String toString() {
    return "Product{"  
            "id='"   id   '''  
            ", name='"   name   '''  
            ", type='"   type   '''  
            ", category='"   category   '''  
            ", description='"   description   '''  
            ", prince="   prince  
            '}';


   }
}
  

StudentController:

 @RestController
@RequestMapping("/products")
public class ProductController {

@PostMapping
    public ResponseEntity<ProductDto> createProduct(@RequestBody Product product) {
        URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(product.getId()).toUri();
        return ResponseEntity.created(location).body(productService.createProduct(product));
    }
}
  

В приведенной выше сущности я хочу использовать @MockMvc для создания теста createProduct. Если имя в продукте равно нулю, я хочу показать сообщение в @MockMvc . Это выглядит так: «имя не может иметь значения null» . Если пройдет, я не хочу это показывать. Ниже приведен мой тест:

 @Test
public void givenProductURIWithPost_whenMockMVC_thenVerifyResponse() {
    this.mockMvc.perform(post("/products")).andDo(print())
      .andExpect(status().isOk()).andExpect(content()
      .contentType("application/json;charset=UTF-8"))
}
  

У меня есть два вопроса:

 1.How to show message "name can not null" if name in product is
null in @mockmvc.
2. If my project in 20 field in Products entity : Example: name,category.. I can test sequence field in Products or only test
one time contain all field.
  

Комментарии:

1. Ваш вопрос мне неясен. Если я правильно понимаю, вы спрашиваете, как проверить продукт перед его сохранением. Используйте проверку компонента. Смотрите docs.spring.io/spring/docs/current/spring-framework-reference /… .

2. @RequestBody @Valid Product product