У меня есть один метод publi c, который вызывает много частных методов, и эти частные методы устанавливают некоторые значения для запроса объекта. один из закрытых методов делает вызов API, используя этот объект в качестве параметра и возвращает ответ. Используя это значение ответа, я вызываю другой приватный метод что-то сделать.
Ниже вы можете увидеть пример структуры моего класса. Частные методы - это более 4 методов, каждый из которых имеет очень длинный лог c и в основном относится к этому классу. Я не использую их в любом другом классе. Они только устанавливают много свойств объекта. Для некоторых из них требуются поля для API.
В модульном тесте я высмеиваю вспомогательный класс и вызываю метод publi c. Таким образом, я отлаживаю приватные методы, но мне нужно назначить около 40 значений по умолчанию для вызова API и продолжить тестирование. Кроме того, если я изменю значение некоторой переменной, ожидаемые результаты будут другими.
В результате, как я могу эффективно провести модульный тест для этого класса? Кажется, что-то не так, но я не знаю, как я могу изменить структуру своего класса и проверить это? Кроме того, тестирование, как этот способ, является интеграционным тестом или модульным тестом? Я так растерялся. Любая помощь будет оценена.
public class SampleClassBase {
have around 40 variables
}
public class SampleClass : SampleClassBase
{
private IHelper _helper;
private string someText;
public SampleClass(IHelper helper)
{
_helper = helper;
}
public void DoSomething()
{
RequestObject obj = new RequestObject();
SetAddress(ref obj);
SetBillingInfo(ref obj);
DoApiCall(ref obj);
}
private void SetAddress(ref RequestObject obj)
{
//set some values from SampleClass variables to obj fields. There are around 10-15 fields and have some null controls for them.
// There can be also another method call from helper class or base class
}
private void SetBillingInfo(RequestObject obj)
{
//set some values from SampleClass variables to obj fields. There are around 10-15 fields and have some null controls for them.
// There can be also another method call from helper class or base class
}
private void DoApiCall(RequestObject obj)
{
// I mock this api call using moq framework.
var response = _helper.DoCall(obj);
//Here I have lots of controls and finally it assign value to someText
someText = response.value;
SaveFile();
}
private void SaveFile()
{
//do things using someText property. Mainly saving a pdf file
}
}