Насмешка над методом для создания исключения (moq ), но в остальном действует как фиктивный объект?

У меня есть класс 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?

52
задан SteveC 2 December 2013 в 05:38
поделиться