У меня есть класс 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
обрабатывает его правильно.
Использую ли я подходящий инструмент для работы? Правильно ли я это делаю? И как мне написать настройку для этого unit test для NUnit
?