差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改
前次修改
下次修改 Both sides next revision
java:wiremock:record-events-from-webhook [2021/08/15 00:30]
tony [WireMock - Record WebHook events]
java:wiremock:record-events-from-webhook [2021/08/15 18:28]
tony
行 1: 行 1:
 {{tag>​wiremock}} {{tag>​wiremock}}
-====== WireMock - Record ​WebHook ​Events ======+====== WireMock - Record ​Webhook ​Events ======
 ===== Problem ===== ===== Problem =====
 我有一隻待測程式(SUT)會相依於外部服務(External Service)的webhook 機制,操作流程如下:​ 我有一隻待測程式(SUT)會相依於外部服務(External Service)的webhook 機制,操作流程如下:​
行 103: 行 103:
 } }
 </​code>​ </​code>​
-接著由於註冊的request body中,destination包含著SUT的IP,而SUT會隨著執行環境而改變,這將導致錄製出來的腳本無法萬用。因此我必須將腳本內RequestBody的Destination移除:​ (註冊的URL就不需要處理了,因為當下的執行前後文是由你的腳本所促成,URL絕對會相同)+接著由於註冊的request body中,destination包含著SUT的IP,而SUT會隨著執行環境而改變,這將導致錄製出來的腳本無法萬用。因此我必須將腳本內RequestBody的Destination移除,如果要考慮情境比較複雜可以直接套Library去移除: (註冊的URL就不需要處理了,因為當下的執行前後文是由你的腳本所促成,URL絕對會相同)
 <code java> <code java>
 private void removeDestination(RequestPattern requestPattern) { private void removeDestination(RequestPattern requestPattern) {
行 119: 行 119:
 private void applyWebHookEvents(StubMapping stubMapping) { private void applyWebHookEvents(StubMapping stubMapping) {
  String context = parseContext(stubMapping);​  String context = parseContext(stubMapping);​
 + if(context == null) return;
  List<​Event>​ postEvents = EventRecorder.getInstance().getEvents(context);​  List<​Event>​ postEvents = EventRecorder.getInstance().getEvents(context);​
  List<​PostServeActionDefinition>​ postServerActionDefinitions = postEvents.stream()  List<​PostServeActionDefinition>​ postServerActionDefinitions = postEvents.stream()