Я следовал этому руководству , чтобы создать архитектуру микросервиса электронной коммерции (на французском языке), и сейчас я пытаюсь написать несколько тестов.Моя архитектура состоит из 4 микросервисов с Eureka и Zuul:
- Микросервис продукта, который здесь для предоставления списка продуктов
- Микросервис заказа, который будет обрабатывать заказы
- Микросервис оплаты, который будет обрабатывать платежи
- Пользовательский интерфейс клиента
Микросервис оплаты должен вызвать микросервис заказов, чтобы проверить, был ли заказ уже оплачен или нет.И это то, что я не могу воспроизвести, чтобы написать модульные тесты.Я хотел бы протестировать этот микросервис без запуска микросервиса заказов.
Как проверить его без запуска микросервиса заказов?
Я уже написал несколько тестов для микросервиса заказов и микросервиса продуктов.
Вот контроллер платежей:
/*
* Operations to save a payment and notify the orders microservice to update the status of the sayed oreder
**/
@PostMapping(value = "/payment")
public ResponseEntity<Payment> payAnOrder(@RequestBody Payment payment){
// We verify if the order has been already payed
System.out.println("We verify if the order has been already payed");
Payment existingPayment = paymentDao.findByidOrder(payment.getIdOrder());
if(existingPayment != null) throw new ExistingPaymentException("This order has already been payed!");
// We save the payment
System.out.println("We save the payment");
Payment newPayment = paymentDao.save(payment);
// if the DAO return null, there was a problem when saving the payment
System.out.println("if the DAO return null, there was a problem when saving the payment");
if(newPayment == null) throw new ImpossiblePaymentException("Error, impossible to establish the payment, retry later!");
// We retrieve the order corresponding to that payment by calling orders microservice
System.out.println("We retrieve the order corresponding to that payment by calling orders microservice");
Optional<OrderBean> orderReq = microserviceOrderProxy.retrieveOneOrder(payment.getIdOrder());
// orderReq.get() extract the object of type OrderBean from Optional
System.out.println("orderReq.get() extract the object of type OrderBean from Optional");
OrderBean order = orderReq.get();
// We update the object to mak the order as payed
System.out.println("We update the object to mak the order as payed");
order.setOrderPayed(true);
// We send the object updated to the orders microservice to update the order's status
System.out.println("We send the object updated to the orders microservice to update the order's status");
microserviceOrderProxy.updateOrder(order);
// We return 201 CREATED to notify the client that the payment has been registered
System.out.println("We return 201 CREATED to notify the client that the payment has been registered");
return new ResponseEntity<Payment>(newPayment, HttpStatus.CREATED);
}
Я заблокирован на этапе, когда мы получаем заказ, соответствующий платежу, потому что он пытается вызвать микросервис заказов, но он не работает!
Вот весь код: https://github.com/kamal951/POC_microservices