差異處
這裏顯示兩個版本的差異處。
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() |