由于我的restapi客户端返回旧数据,如何清除缓存?

时间:2019-06-13 16:31:45

标签: c# restsharp

我们的团队一直在使用Specflow使用RestSharp作为API客户端来创建API测试。我正在测试的API只是使用POST方法创建了一个资产(具有一些属性),然后使用GET方法来获取新资产的数据,因此我可以反序列化并验证一些属性以确保新资产已创建。

例如,我通过名称属性传递新资产,其中Name =“ Asset15”(其中从序列创建了ID = 15的新资产),然后我获得了通过ID = 15的信息以验证存在具有名称=“ Asset15”的新资产。一切似乎都在起作用,直到最近。

例如,在不更改任何代码的情况下,测试现在会创建ID = 20的Name =“ Asset20”的新资产,但是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个记录。有人可以帮忙让我知道我做错了吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

这里的问题是API而不是测试代码。可以关闭,因为它不是问题。