Я создал простой API, который еще не реализует полный CRUD, но я нашел свою первую проблему.Все отлично работает, когда я запускаю свой API с swagger, но когда я запускаю тесты для методов Post, кажется, что он отклоняет мои запросы.
Tests:
@RunWith(SpringRunner.class)
@WebFluxTest(controllers = CustomerController.class)
@Import(CustomersService.class)
public class CustomerControllerTest {
@MockBean(answer = Answers.RETURNS_DEEP_STUBS)
private CustomersService mockedService;
@Autowired
private WebTestClient client;
...
@Test
public void endpointAddWhenGivenGoodJsonShouldReturn201() {
//todo: fix test, it works in API.
int id = -1;
Customer customer1 = new Customer(id, "name", new Address("city", "street", "zcode"));
Mockito
.when(mockedService.addCustomer(customer1))
.thenReturn(Mono.just(customer1));
client.post()
.uri("/api/add/")
.accept(MediaType.APPLICATION_JSON_UTF8)
.contentType(MediaType.APPLICATION_JSON_UTF8)
.body(Flux.just(customer1), Customer.class)
.exchange()
.expectStatus().isCreated();
}
@Test
public void endpointAddWhenGivenGoodJsonShouldReturn400() {
int id = -1;
Customer customer1 = new Customer(id, "name", new Address("city", "street", "zcode"));
Mockito
.when(mockedService.addCustomer(customer1))
.thenReturn(Mono.empty());
client.post()
.uri("/api/add/")
.accept(MediaType.APPLICATION_JSON_UTF8)
.contentType(MediaType.APPLICATION_JSON_UTF8)
.body(Mono.just(customer1), Customer.class)
.exchange()
.expectStatus().isBadRequest();
}
}
оба теста, кажется, возвращают isNotFound ().
Класс обслуживания:
@Service
public class CustomersService implements CustomersServiceInterface {
private final RepositoryInterface customersRepository;
public CustomersService(RepositoryInterface customersRepository) {
this.customersRepository = customersRepository;
}
public Flux<Customer> getCustomerById(int id) {
return customersRepository.getById(id);
}
public Flux<Customer> getAllCustomers() {
return customersRepository.getAll();
}
public Mono<Customer> addCustomer(Customer newCustomer) {
return customersRepository.saveCustomer(newCustomer);
}
}
, который является поддельным, поэтому хранилище не имеет значения.
Как я могу исправить тесты, чтобы увидеть, что делает API, поэтому возвращаем хорошеекоды состояния (201 и 400)?