Наша команда создает тесты 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 записи. Может кто-нибудь помочь и сообщить мне, что я делаю не так? Заранее спасибо!