我只是不知道如何模拟一个情况来测试这个。我真的应该在文件系统上创建一个文件吗?
public static void DeleteIfExists(this FileInfo fileInfo)
{
if (fileInfo.Exists)
{
fileInfo.Delete();
}
}
最佳答案
我会使用一个模拟框架,比如 RhinoMocks 。
[Test]
public void ShouldDeleteAFileWhenItExists()
{
var mockInfo = MockRepository.GenerateMock<FileInfo>();
mockInfo.Expect( i => i.Exists ).Return( true ).Repeat.Once();
mockInfo.Expect( i => i.Delete() ).Repeat.Once();
var extensions = new FileInfoExtensions();
extensions.DeleteIfExists( mockInfo );
mockInfo.VerifyAllExpectations();
}
[Test]
public void ShouldNotDeleteAFileWhenItDoesNotExist()
{
var mockInfo = MockRepository.GenerateMock<FileInfo>();
mockInfo.Expect( i => i.Exists ).Return( false ).Repeat.Once();
mockInfo.Expect( i => i.Delete() ).Repeat.Never();
var extensions = new FileInfoExtensions();
extensions.DeleteIfExists( mockInfo );
mockInfo.VerifyAllExpectations();
}
其他有关 Delete 何时引发异常的测试等。
关于c# - 如何对这个 C# 扩展方法进行单元测试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5366426/