#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