J'essaie de railler la méthode Add de SimpleRepository subsonique avec Rihino mocks, j'utilise l'interface IRepository mais je suis nouveau à moquer et je ne sais pas comment aller à partir de là, cela peut-il être fait? Merci de votre aide.Comment mock Ajouter la méthode de SimpleRepository de subsonic
2
A
Répondre
1
Cela dépend de ce que vous voulez tester. Est-ce que vous vous souciez de savoir si la méthode Add() est appelée ou non, ou voulez-vous simplement configurer une réponse standardisée qui peut être appelée ou non?
Si vous attendez l'appel: -
var mocks = new MockRepository();
var repo = mocks.StrictMock<IRepository>():
var myObj = CreateSampleObject();
using(mocks.Record())
{
Expect.Call(repo.Add(myObj)).Return(myObj);
}
using(mocks.Playback())
{
var target = CreateTarget(repo);
target.DoSomething(myObj);
}
Si vous ne vous inquiétez pas si elle est appelée ou non, utilisez SetUpResult au lieu de s'attendre, par exemple
SetUpResult.For(rep.Add(myObj)).Return(myObj);
2
AdamRalph est correct, mais je préfère la syntaxe AAA de Rhino Mocks:
// arrange
var repo = MockRepository.GenerateStub<IRepository>();
var myObject = CreateSampleObject();
repo.Stub(r => r.Add(myObj)).Return(myObj);
// act (this assumes that the call to "SomeMethod" on "SomeClass"
// returns the result of the IRepository.Add).
var someClass = new SomeClass(repo);
var result = someClass.SomeMethod();
// assert
Assert.AreSame(myObject, result);