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