[英]Detecting breaking changes using Pact.IO (PactNet)
我正在嘗試使用 PactNet 進行合同測試。 在出現一些問題后,我設法啟動並運行它(消費者測試 -> 經紀人 -> 提供商測試),但有一件事讓我感到困惑:
假設我有一份合同:
/// <summary>
/// Weather forecast Id
/// </summary>
public int Id { get; init; }
/// <summary>
/// Temperature in celsius
/// </summary>
public int Temperature { get; init; }
一切正常。 讓我們在生產者端更改 Temperature 字段的數據類型,並使其成為例如可為空的雙精度值:
/// <summary>
/// Weather forecast Id
/// </summary>
public int Id { get; init; }
/// <summary>
/// Temperature in celsius
/// </summary>
public double? Temperature { get; init; } // Changed to nullable double
pact.json:
{
"description": "A valid request for a single weather data",
"providerStates": [
{
"name": "Weather forecast with id = 10 exists"
},
{
"name": "Any tenant context"
}
],
"request": {
"method": "GET",
"path": "/WeatherForecasts/10"
},
"response": {
"body": {
"Id": 1,
"Temperature": 6
},
"headers": {
"Content-Type": "application/json; charset=utf-8"
},
"matchingRules": {
"body": {
"$.Id": {
"combine": "AND",
"matchers": [
{
"match": "integer"
}
]
},
"$.Temperature": {
"combine": "AND",
"matchers": [
{
"match": "integer"
}
]
}
},
"header": {}
},
"status": 200
}
}
針對當前協議運行測試時,似乎一切正常,測試將通過。 但這種類型的改變是一個突破性的改變。 Pact 不應該檢測到這種重大變化嗎? 這不就是它的目的嗎? 但是 pact.json 文件中沒有關於數據類型和可空性的信息。 到目前為止,我只能檢測到響應中缺少的屬性。
我錯過了什么嗎?
針對當前協議運行測試時,似乎一切正常,測試將通過。 但這種類型的改變是一個突破性的改變。 Pact 不應該檢測到這種重大變化嗎? 這不就是它的目的嗎? 但是 pact.json 文件中沒有關於數據類型和可空性的信息。 到目前為止,我只能檢測到響應中缺少的屬性。
是的,這是一個重大變化,如果您的提供商為該字段返回null
,它應該會解決這個問題。
如果您需要能夠支持可選字段(在消費者測試中),則需要測試這兩種情況。 有關更多信息,請參閱https://docs.pact.io/faq#why-is-there-no-support-for-specifying-optional-attributes 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.