Je suis nouveau à Rhino Mocks, et en utilisant des cadres d'isolement fictifs en général pour les tests unitaires. J'ai écrit le test suivant, où j'ai mis en place une attente pour un objet IDataProvider fictif pour retourner une collection d'objets. La collection fournie contient un objet.Rhino Mocks attente ne pas retourner la collection correctement
Lorsque j'exécute le test, l'appel à IDataProvider renvoie une liste vide lorsqu'il doit renvoyer la liste avec un objet.
Des idées sur ce qui ne va pas?
Voici mon test: (S'il vous plaît excuser les mauvaises pratiques ici ... ne hésitez pas à parler de tout Im essayant d'apprendre Merci.!)
[TestMethod()]
public void FetchDataSeries_NeedsUpdate_SuccessfulDataSeriesRetrievedFromDataProvider() {
List<IDataSeries> dataSeries = new List<IDataSeries>();
dataSeries.Add(new DataSeries("test"));
DrillDownLevel level = DrillDownLevel.YEAR;
int? year = 2008;
var dataProvider = _MockRepository.CreateMock<IDataProvider>();
dataProvider.Expect(dp => dp.GetDataSeries(String.Empty, level, year, null ,null, null)).Return(dataSeries);
_DataSourceContext.DataProvider = dataProvider;
CollectionAssert.AreEqual(dataSeries, _DataSourceContext.FetchDataSeries(level, year, null, null, null));
dataProvider.VerifyAllExpectations();
}
partie pertinente de la méthode à l'essai: (Le DataProvider. GetDataSeries appel retourne la liste vide ... cela devrait retourner la liste bouchonné.)
public override List<IDataSeries> FetchDataSeries(DrillDownLevel? drillDownLevel, int? year, int? month, DateTime? week, int? day) {
List<IDataSeries> dataSeries = new List<IDataSeries>();
// Cache data for maximum cache period
// if data has been cached for longer than the maxium cache period OR the updateInterval has elapsed UNLESS LastUpdateAttempt was less than minimum update interval
if (NeedsUpdate(LastUpdate, LastUpdateAttempt)) {
// Attempt to get new data
LoggingService.InfoFormat("DataSourceContext: {0}: Attempting to get new data:", Name);
dataSeries = DataProvider.GetDataSeries(DataQuery, drillDownLevel, year, month, week, day);
}
return dataSeries;
}
Peut-être qu'il a trouvé un bug dans le code que vous testez? Pourriez-vous poster le code pour FetchDataSeries aussi? –
IDataProvider.GetDataSeries est-il surchargé ou existe-t-il une seule méthode portant ce nom? Quel est le paramètre DataQuery transmis à la méthode dans l'implémentation? –