2010-07-21 14 views
0

J'ai unRhino Mock Vérifiez qu'un mehods a été appelé plusieurs fois dans un ordre particulier

J'ai une interface appelée IFileDownloader qui a une signature appelée DownlowadFile (url string, string fileName)

J'ai class, appelé, StockManager qui implémente cette méthode. Cette classe a une autre méthode appelée DownloadFiles (string url, String [] fileNames) qui appelle la méthode Interface. Comment puis-je utiliser Rhino Mocks pour vérifier que la signature a été appelée pour chaque fichier passé dans String [] fileNames?

Je l'ai implémenté pour un seul fichier mais je ne sais pas comment le modifier pour prendre une liste ordonnée? Voici mon exemple de code:

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(); 

Répondre

0

D'abord, pas si vous utilisez .Stub vous spécifiez uniquement le comportement. Il n'enregistre pas d'attente. Pour enregistrer une attente vérifiée par VerifyAllExpectations, utilisez .Expect au lieu de .Stub. Lorsque vous utilisez .Expect pour plusieurs appels avec des arguments différents, VerifyAllExpectations vérifie qu'ils ont été appelés dans l'ordre indiqué.