Tôi đã có một loạt các thành phần "pipelined" mà tất cả giao tiếp thông qua hàng đợi tin nhắn ActiveMQ. Mỗi thành phần sử dụng Camel để xử lý từng hàng đợi như một điểm cuối. Mỗi thành phần sử dụng các mô hình cơ bản giống nhau:Kiểm tra Camel với MockEndpoints
đâu mỗi thành phần tiêu thụ thông điệp tắt của một hàng đợi đầu vào, xử lý thông báo (s), và sau đó đặt 1+ tin nhắn trong một hàng đợi outbound/đầu ra. Hàng đợi "đầu ra" sau đó trở thành hàng đợi "đầu vào" cho thành phần tiếp theo trong chuỗi. Khá cơ bản.
Tôi hiện đang cố gắng cuộn lên tay áo của mình và cung cấp kiểm tra đơn vị cho mỗi thành phần bằng cách sử dụng MockEndpoints
do API kiểm tra của Camel cung cấp. Tôi đã rót qua javadocs và một số ví dụ trên trang web của Camel, nhưng gặp khó khăn khi kết nối tất cả các dấu chấm.
Dường như với tôi rằng, đối với mỗi thành phần, một phần của kiểm tra đơn vị của tôi sẽ muốn đạt được ba điều sau đây:
- thử nghiệm để xem nếu có thông báo chờ đợi vào một đặc biệt "đầu vào "hàng đợi
- Kéo những thông điệp xuống và xử lý chúng
- Đẩy thông điệp mới cho một 'đầu ra' hàng đợi và xác minh rằng họ đã làm cho nó có
tôi được Lieve tôi cần phải tạo MockEndpoints
cho mỗi hàng đợi như vậy:
@EndpointInject(uri = "mock:inputQueue")
protected MockEndpoint intputQueue;
@EndpointInject(uri = "mock:outputQueue")
protected MockEndpoint outputQueue;
Vì vậy, bây giờ, trong phương pháp thử JUnit của tôi, tôi có thể thiết lập những kỳ vọng và tương tác với các thiết bị đầu cuối:
@Test
public final void processMethodShouldSendToOutputQueue()
{
Component comp = new Component();
comp.process();
outputQueue.assertIsSatisfied();
}
Tôi chỉ không hiểu làm thế nào để dây tất cả mọi thứ lên một cách chính xác:
- làm thế nào để kết nối
comp
đếninputQueue
vàoutputQueue
MockEndpoints? - Đối với mỗi
MockEndpoint
, làm cách nào để thiết lập kỳ vọng đểassertIsSatisfied()
kiểm tra xem thư có nằm trong hàng đợi cụ thể hay hàng đợi cụ thể chứa thư không?
http: // stackoverflow. com/questions/5664331/how-to-unit-test-production-routes-in-apache-lạc đà –