У меня есть класс Transfer
, в упрощенном виде он выглядит так:
public class Transfer
{
public virtual IFileConnection source { get; set; }
public virtual IFileConnection destination { get; set; }
public virtual void GetFile(IFileConnection connection,
string remoteFilename, string localFilename)
{
connection.Get(remoteFilename, localFilename);
}
public virtual void PutFile(IFileConnection connection,
string localFilename, string remoteFilename)
{
connection.Get(remoteFilename, localFilename);
}
public virtual void TransferFiles(string sourceName, string destName)
{
source = internalConfig.GetFileConnection("source");
destination = internalConfig.GetFileConnection("destination");
var tempName = Path.GetTempFileName();
GetFile(source, sourceName, tempName);
PutFile(destination, tempName, destName);
}
}
Упрощенная версия интерфейса IFileConnection
выглядит так:
public interface IFileConnection
{
void Get(string remoteFileName, string localFileName);
void Put(string localFileName, string remoteFileName);
}
Настоящий класс должен обрабатывать System.IO.IOException
, который вызывается, когда IFileConnection
конкретные классы теряют связь с удаленным, отправляя электронные письма и что-то еще.
Я хотел бы использовать Moq для создания класса Transfer
и использовать его как мой конкретный класс Transfer
во всех свойствах и методах, за исключением случаев, когда метод GetFile
вызывается -, тогда я хочу, чтобы он выбросьте System.IO.IOException
и убедитесь, что класс Transfer
обрабатывает его правильно.
Правильно ли я использую инструмент для работы? Правильно ли я поступаю? И как мне написать настройку для этого модульного теста для NUnit
?