Как очистить кеш, так как мой клиент RestaP возвращает старые данные? - PullRequest
0 голосов
/ 13 июня 2019

Наша команда создает тесты API с помощью Specflow, используя RestSharp в качестве клиента API. API, который я тестирую, просто создает актив (который имеет несколько свойств) с помощью метода POST, а затем я использую метод GET, чтобы получить данные для нового актива, чтобы я мог десериализовать и проверить несколько свойств, чтобы убедиться, что новый ресурс создан.

Например, я передаю новый актив со свойством name, где Name = "Asset15" (где из последовательности создается новый актив с ID = 15), а затем получаю информацию, передающую ID = 15, чтобы убедиться, что новый актив с именем = "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 записи. Может кто-нибудь помочь и сообщить мне, что я делаю не так? Заранее спасибо!

1 Ответ

0 голосов
/ 13 июня 2019

Проблема здесь была с API, а не с тестовым кодом.Это может быть закрыто, так как это не проблема.

...