Вы должны реорганизовать свой код, чтобы удалить зависимость от консоли из этого кода.
Например, вы можете сделать это:
public interface IConsole
{
void Write(string message);
void WriteLine(string message);
string ReadLine();
}
и затем изменить свой код следующим образом:
public void SignInScoreBoard(int steps, IConsole console)
{
... just replace all references to Console with console
}
Чтобы запустить его в производство, передайте ему экземпляр этого класса:
public class ConsoleWrapper : IConsole
{
public void Write(string message)
{
Console.Write(message);
}
public void WriteLine(string message)
{
Console.WriteLine(message);
}
public string ReadLine()
{
return Console.ReadLine();
}
}
Однако во время тестирования используйте это:
public class ConsoleWrapper : IConsole
{
public List<String> LinesToRead = new List<String>();
public void Write(string message)
{
}
public void WriteLine(string message)
{
}
public string ReadLine()
{
string result = LinesToRead[0];
LinesToRead.RemoveAt(0);
return result;
}
}
Это облегчает тестирование вашего кода.
Конечно, если вы хотите проверить, записан ли правильный вывод, вам нужно добавить код в методы записи, чтобы собрать вывод, чтобы вы моглиподтвердите это в своем тестовом коде.