2010-07-21 48 views
0

我有多次调用一个犀牛模拟验证一个Mehods是在一个特定的顺序

我有一个名为IFileDownloader一个接口,它有一个名为DownlowadFile(字符串URL,字符串文件名)签名

我有一个类,叫做StockManager,它实现了这个方法。这个类有另一个名为DownloadFiles(string url,String [] fileNames)的方法,它调用Interface方法。我如何使用Rhino Mocks验证是否为String [] fileNames中的每个传入文件调用了签名?

我已经为单个文件实现它,但不确定如何修改它以获取有序列表?这里是我的示例代码:

var stubbedFileDownloader = MockRepository.GenerateMock<IFileDownloader>(); 
string url = "http://abc.def.klm/download/" 
string EXPECTED_FILENAME = "AVC2.xml"; 
stubbedFileDownloader.Stub(x => x.DownloadFile(url, EXPECTED_FILENAME) 
    .Return(true); 

var stockManager = new StockManager(); 
stockManager.DownloadFiles(url, new string[] { "AVC2.xml" }); 
stubbedFileDownloader.VerifyAllExpectations(); 

回答

0

首先,不是如果您使用.Stub您只指定行为。它没有记录预期。要记录VerifyAllExpectations检查的期望值,请使用.Expect而不是.Stub

当您使用.Expect进行具有不同参数的多次调用时,VerifyAllExpectations将检查它们是否按给定顺序调用。