我目前正在处理许多 .NET Core API 项目,并遇到了未来可能的回归。 你们如何防止这种情况?
这是我的架构:
集成测试示例:
[Fact]
public async Task TestGetAll()
{
// Arrange
var query = "api/v1/xxx/getall";
// Act
var response = await _AuthorizedClient.GetAsync(query);
// Assert
Assert.True(response.IsSuccessStatusCode);
var results = JsonConvert
.DeserializeObject<List<MyResult>>(await response.Content.ReadAsStringAsync());
Assert.True(results.Any());
//Assert.AnythingOn(results);
}
考虑下一个版本和/或我的[同事]维护;使用我的反序列化转换,MyResult
对象的更新可能会被隐藏并导致生产回归。
我尝试使用 dynamic 关键字进行集成测试,但不进行强制转换,但这需要我付出很多努力。
你是如何处理这种情况的? 有什么最佳做法吗?
[编辑] 经过一番搜索,我发现这篇文章Differential Regression Testing for REST APIs 看起来很有趣
答案 0 :(得分:0)
根据我的经验,动态不是一个好的做法,因为它永远不会在构建时失败,但在执行时会失败。 我认为你应该使用这样的东西:
public static T DeserializeObject<T>(string value)
{
T result = default(T);
try {
result = JsonConvert.DeserializeObject<T>(value);
}
return result;
}