У меня есть Transfer
класса, упростили это выглядит следующим образом:Издевательствовать метод выброса исключения (moq), но в противном случае действовать как насмешливый объект?
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
?
Хм. Не то, что я ожидал, и теперь я вижу, что я слишком упростил свой класс «Передача». Можете ли вы посмотреть на изменения, внесенные мной в класс «Перенос»? Это немного напоминает мой код. Свойства отображаются в классе, но я сделал это в основном, поэтому я мог проверить условие исключения. Это то, что я пытался сделать не так? –
@JeremyHolovacs Я обновил свой ответ. –
Хм. То, что я считал простым, кажется, становится меньше. Позвольте мне спросить вас об этом: имеет ли смысл создавать тестовый класс, который наследует от «Transfer» и переопределяет метод для целей тестирования? Возможно, насмехается не правильная технология для использования в этом сценарии, и я пытаюсь засунуть квадратный штифт в круглое отверстие? –