2017-08-31 37 views
0

如果生產者更改輸入消息正文,我們是否有辦法從消費者方面測試輸入消息合同?春季雲合同測試 - 輸入消息驗證

我們只使用stubTrigger.trigger(「label」);從消費者側進行測試,但消費者如何知道如果製造商更改輸入消息合同?對於我來說,消費者測試案例似乎總是通過生產者變更輸入合同。

回答

0

所以,我明白你有一些同步的情況下,你收到一條消息,然後發送另一個到其他應用程序?或者相反,你發送一條消息,然後期望回到另一條消息。

您有2個選擇。一種是閱讀文檔並使用這種方法(http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#_scenario_2_output_triggered_by_input)。在這裏,您可以定義一個特定輸入消息將允許觸發輸出的合同。所以在你的情況下,如果你的輸出信息是錯誤的,那麼你將不會收到另一個。另一種方法實際上是將其分成兩份合約(https://github.com/spring-cloud/spring-cloud-contract/issues/321)。假設您的應用程序名爲A,另一個名爲B.第一個合同將是A向B發送消息(A是生產者),第二個是B向A發送消息(B是生產者)。因此,如果A想要改變輸入以將消息發送給B,則合同測試將失敗。

+0

我有簡單的用例。可以說我有兩個應用程序 應用程序A和應用B 應用程式在消息隊列 應用B監聽的隊列讓員工「名稱」作爲輸入信息,並與響應把員工的「姓名」要求員工詳細詳細信息 現在我的問題是如果 作爲生產者應用程序B將員工「姓名」更改爲員工「ID」作爲輸入。 我期待消費者應用程序A將失敗,因爲消費者代碼沒有變化,並且它的劇照發送「名稱」作爲輸入,而不是「id」。 但測試用例正在傳遞新生成的存根。 請幫我在這裏錯過了一些東西。 –

+0

應用程序A是嚮應用程序B發送消息的生產者。但是,稍後您會寫出,B是向A發送消息的生產者。我很困惑 –