我花了一天中的很大一部分時間試圖找出爲什麼簡單的RhinoMocks測試不會返回我在返回中設置的值。我確信我只是錯過了一些非常簡單的事情,但我無法弄清楚。這是我的測試:RhinoMocks AAA語法
[TestMethod]
public void CopyvRAFiles_ShouldCallCopyvRAFiles_ShouldReturnTrue2()
{
FileInfo fi = new FileInfo(@"c:\Myprogram.txt");
FileInfo[] myFileInfo = new FileInfo[2];
myFileInfo[0] = fi;
myFileInfo[1] = fi;
var mockSystemIO = MockRepository.GenerateMock<ISystemIO>();
mockSystemIO.Stub(x => x.GetFilesForCopy("c:")).Return(myFileInfo);
mockSystemIO.Expect(y => y.FileCopyDateCheck(@"c:\Myprogram.txt", @"c:\Myprogram.txt")).Return("Test");
CopyFiles copy = new CopyFiles(mockSystemIO);
List<string> retValue = copy.CopyvRAFiles("c:", "c:", new AdminWindowViewModel(vRASharedData));
mockSystemIO.VerifyAllExpectations();
}
我有我的SystemIO類的接口我傳遞給我的CopyFiles類的模擬。我對我的FileCopyDatCheck方法設置了一個期望,並說它應該返回(「Test」)。當我遍歷代碼時,它會返回一個空值。任何想法,我在這裏失蹤?
這裏是我的CopyFiles類的方法:
public List<string> CopyvRAFiles(string currentDirectoryPath, string destPath, AdminWindowViewModel adminWindowViewModel)
{
string fileCopied;
List<string> filesCopied = new List<string>();
try
{
sysIO.CreateDirectoryIfNotExist(destPath);
FileInfo[] files = sysIO.GetFilesForCopy(currentDirectoryPath);
if (files != null)
{
foreach (FileInfo file in files)
{
fileCopied = sysIO.FileCopyDateCheck(file.FullName, destPath + file.Name);
filesCopied.Add(fileCopied);
}
}
//adminWindowViewModel.CheckFilesThatRequireSystemUpdate(filesCopied);
return filesCopied;
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "vRAClientPolicy");
Console.WriteLine("{0} Exception caught.", ex);
ShowErrorMessageDialog(ex);
return null;
}
}
我認爲「fileCopied」必須由期望設定的返回值。 GetFilesForCopy返回myFileInfo中的兩個文件。請幫忙。 :)
在此先感謝!
你在說什麼很有意義,我認爲這真的幫助我理解這裏發生了什麼。謝謝! – 2010-03-01 17:59:35