Дважды вызовите тестовый метод с одним и тем же параметром другого типа данных.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Дважды вызовите тестовый метод с одним и тем же параметром другого типа данных.

Сообщение Anonymous »

Я пытаюсь уменьшить дублирование кода, объединив два метода проверки тестов. Оба метода тестирования передают три параметра (

Код: Выделить всё

actualResponse
, ожидаемый ответ, filterParams), но проблема в том, что даже если два метода определяют одно и то же имя для параметров, их типы данных различны.
Вот краткое описание сценария:
Класс TestSteps.cs, в котором вызываются эти методы:

Код: Выделить всё

public class TestSteps : BaseTest
{

// _result holds the actual results coming from context get cal
private Context _result = new();

// _SolutionExpectedResponse have expected response from json file.
private readonly Context _SolutionExpectedResponse = new();

public TestSteps()
{
string jsonstring = File.ReadAllText(@Path of response.json file);
_SolutionExpectedResponse = JsonConvert.DeserializeObject(jsonstring);
}
[When(@Call context api)]
public void WhenCallContextAPI()
{
_result = Context.GetAsync(token,resource).Result;
}

[Then(@Verify the response Values)]
public void ThenVerifyTheResponseValues()
{
ValidateDataValues(_result.Data, _SolutionExpectedResponse.Data, new string[] {"data"})

ValidateSensitiveDataValues(_result.SensitiveData, _SolutionExpectedResponse.SensitiveData, new string[] {"sensitiveData"})
}
}
Класс BaseTest.cs, в котором были написаны методы проверки:
Метод № 1:

Код: Выделить всё

Protected void ValidateDataValues(List actualResponse,  List  expectedResponse,  string[] filterParams)

{

if (filterParams.contains("data"))
{
if(actualResponse !=null)
{
for(int i=0; i < expectedResponse.Count; i++)
{
if((actualResponse[i].Key !=null)
{
actualResponse[i].Key.Value.ToString().Should.BeEquivalentTo(expectedResponse[i].Key.Value.ToString());
}
}
return;
}
else
{
actualResponse.Should().BeNull();
}
}

}
Метод №2:

Код: Выделить всё

Protected void ValidateSensitiveDataValues(List actualResponse,  List  expectedResponse,  string[] filterParams)

{

if (filterParams.contains("sensitiveData"))
{
if(actualResponse !=null)
{
for(int i=0; i < expectedResponse.Count; i++)
{
if((actualResponse[i].Key !=null)
{
actualResponse[i].Key.Value.ToString().Should.BeEquivalentTo(expectedResponse[i].Key.Value.ToString());
}
}
return;
}
else
{
actualResponse.Should().BeNull();
}
}

}
Можно ли мне уменьшить дублирующийся код, добавив параметры метода №2 в метод №1 и исключив метод №2?
ИЛИ< /p>
Вызвав метод №1 из метода №2 путем преобразования типа данных?

Подробнее здесь: https://stackoverflow.com/questions/752 ... t-datatype
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»