[英]PACT - Handling provider service state and running actual provider with mocked or actual database
我是 PACT 的新手,並嘗試使用 pact-net 進行 .net 微服務的合同測試。 我理解生成協議文件的消費者測試的概念。 有一個提供者狀態中間件的概念,它負責確保提供者的狀態與生成的協議中的 Given() 條件相匹配。 我對以下內容或如何實現這一點感到有些困惑:
提供者測試針對實際服務運行。 所以我們在運行測試之前啟動提供者服務。 我的提供者服務與數據庫交互以存儲和檢索記錄。 PACT 還提到服務的所有依賴項都應該被存根。
我遇到的所有基本博客文章都沒有解釋這一點,並且通常有沒有提供程序狀態或狀態只是文件系統上的一些文本文件的示例。
幫助表示贊賞。
提供者測試針對實際服務運行
您的意思是針對實時環境,還是針對單元測試在本地運行的實際服務(不推薦前者,因為上面的(2))。
這是該規則的例外之一。 您可以選擇使用真正的數據庫或內存中的數據庫 - 無論哪種最方便。 使用 docker 和類似工具進行測試是很常見的。
在您的情況下,我有一組特定的僅測試路由來響應提供者狀態處理程序端點,它們也可以訪問存儲庫代碼並可以操縱系統狀態。
我要補充馬特的評論,你有三個選擇:
使用連接的環境進行提供程序測試,但之后您必須手動進行一些清理,並確保您的數據始終在您的數據庫中可用或/並且外部 API 始終啟動並運行。 編寫簡單,但可能很難維護。
您模擬 API 調用,但調用真正的數據庫。
您模擬所有外部依賴項:API 和數據庫調用。
對於 2) 或 3),您必須擁有測試路由並在您的提供者測試裝置中注入提供者狀態中間件。 然后,您可以配置要調用的提供程序狀態以在解決方案 3) 中生成內存數據,或者在解決方案 2) 中添加一些 data-init
你可以在這里找到一個例子: https : //github.com/pact-foundation/pact-net/tree/master/Samples/EventApi/Provider.Api.Web.Tests
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.