我有一个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
调用该方法 - 然后我希望它抛出 aSystem.IO.IOException
并确保Transfer
该类正确处理它。
我是否使用了正确的工具来完成这项工作?我会以正确的方式解决这个问题吗?我将如何为该单元测试编写设置NUnit
?