c# - 由于我的restapi客户端返回旧数据,如何清除缓存?
问题描述
我们的团队一直在使用 RestSharp 作为 API 客户端使用 Specflow 创建 API 测试。我正在测试的 API 只是使用 POST 方法创建一个资产(具有一些属性),然后我使用 GET 方法获取新资产的数据,因此我可以反序列化并验证一些属性以确保新资产资产已创建。
例如,我通过 name 属性传递新资产,其中 Name="Asset15" (从序列中创建 ID=15 的新资产),然后我得到传递 ID=15 的信息以验证新资产Name="Asset15" 存在。直到最近,一切似乎都在工作。
例如,在不更改任何代码的情况下,测试会创建 Name="Asset20" 且 ID=20 的新资产,但 GET 方法似乎返回的是 Name="Asset19" 和 ID=19 的记录,导致我的即使我手动看到已创建 Name="Asset20" 和 ID=20 的资产,测试也明显失败。
似乎存在一些缓存问题,我想知道清除此缓存的方法是什么。
我在某处看过一篇文章,该人仅通过重新启动 Visual Studio 来解决此问题。我尝试这样做只是为了得到 2 条记录的结果。
这就是我设置测试的方式:
_settings.BaseUrl = new Uri(ConfigurationManager.AppSettings["baseUrl"].ToString());
_settings.RestClient.BaseUrl = _settings.BaseUrl;
执行 POST 方法来创建资产:
_settings.PostRequest = new RestRequest("CreateAsset", Method.POST);
_settings.PostRequest.RequestFormat = DataFormat.Json;
_settings.PostRequest.AddJsonBody(testData);
_settings.PostResponse = _settings.RestClient.Execute(_settings.PostRequest);
稍后我执行 GET 方法,反序列化,并验证信息是否正确:
_settings.GetRequest = new RestRequest("GetAsset?id=20", Method.GET);
_settings.GetResponse = _settings.RestClient.Execute(_settings.GetRequest);
var deserial = new JsonDeserializer();
var output = deserial.Deserialize<Dictionary<string, string>>(_settings.GetResponse);
var result = output["Name"];
Assert.That(result.Equals(testData.Name), $"Error: ...");
测试通过了,现在似乎落后了 1 或 2 条记录。有人可以帮助并让我知道我做错了什么吗?提前致谢!
解决方案
这里的问题在于 API 而不是测试代码。这可以关闭,因为它不是问题。
推荐阅读
- reactjs - 页面中没有加载css background-images,反应
- swift - 实现 UIPageViewController 的问题
- templates - Terraform k8sraw 提供程序错误:产生了一个意外的新值,但在创建模板时现在不存在
- validation - 如何验证相互依赖的文本框并在动态(使用 JS)添加的输入文本框下显示错误消息?
- r - 基于R中不同数据框中的另一列选择列
- python - 使用具有每日平均值的特定字符串列创建新数据集
- kubernetes - 在 Kubernetes 节点中“共享”静态 IP
- php - 如何在PHP中链接文件夹中的图像
- python - 用图像替换 x 标签
- python - 在 Python 中调试凯撒密码