2016-08-10 80 views
1

我有這讓一些文件的備份方法:單元測試使用SystemWrapper和犀牛製品

public void MakeBackup(IFileWrap file, string path) 
    { 
     if (path == null) 
      throw new ArgumentNullException(); 

     Console.WriteLine(); 

     string backups = Environment.CurrentDirectory + @"\Backups\"; 

     if (!Directory.Exists(backups)) 
      Directory.CreateDirectory(backups); 

     if (file.Exists(path)) 
     { 
      file.Copy(path,backups + Path.GetFileName(path),overwrite: true); 
      Console.WriteLine("Backup of the " + Path.GetFileName(path) + " lies in the " + backups); 
     } 


} 

與IAM的嘗試使用SystemWrapper和犀牛製品進行測試:

[TestMethod] 
    public void MakeBackupTest() 
    { 
     IFileWrap fileRepository = MockRepository.GenerateMock<IFileWrap>(); 

     fileRepository.Expect(x => x.Exists(@"G:\1.txt")); 
     fileRepository.Expect(x => x.Copy(@"G:\1.txt", Environment.CurrentDirectory + @"\Backups\1.txt", overwrite: true)); 

     new Windows().MakeBackup(fileRepository,@"G:\1.txt"); 


     fileRepository.VerifyAllExpectations(); 

    } 

測試以上失敗。我究竟做錯了什麼?

+0

它是如何「失敗」?它是拋出一個異常,還是期望失敗?請發佈信息或例外情況。 – mxmissile

+0

調試器是程序員的最佳工具! – Andrew

回答

1

您未設置fileRepository.Exists的返回值 - 默認值爲false。它應該是這樣的:

fileRepository.Expect(x => x.Exists(@"G:\1.txt")).Return(true);