我有一个 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
的单元测试设置?