Mocking Objekten mit Subobjekte mit Rhino Mocks
-
08-07-2019 - |
Frage
Unter der Annahme eines IMouvement Objekt, das einige Unterobjekte wie ITache enthält, IStockPalette.
public interface IMouvement : IObjectBase<Guid>
{
ITache Tache { get; set; }
IStockPalette StockPalOrigine { get; set; }
}
Wie kann ich Mock dies mit Rhino Mocks?
Unter der Annahme, diesen Test, was mit diesem falsch?
[TestMethod]
public void Can_Validate_EmplacementTransitoireRule()
{
var mocks = new MockRepository();
var mouvement = mocks.StrictMock<IMouvement>();
var manager = mocks.StrictMock<ValidationManager>();
mouvement.Tache = mocks.StrictMock<ITache>();
mouvement.StockPalOrigine = mocks.StrictMock<IStockPalette>();
mouvement.ID = Guid.NewGuid();
var rule = new EmplacementTransitoireRule(mouvement);
manager.AddRule(rule);
Expect.Call(manager.ValidateAll()).Return(true);
mocks.ReplayAll();
var all = manager.ValidateAll();
mocks.VerifyAll();
Assert.IsTrue(all);
}
dieser Test immer versagt ..
Lösung
Normalerweise würde ich die Erwartungen auf den Mock-Objekte einrichten, anstatt nur ihre Eigenschaften zuweisen.
Tache tache = mocks.StrictMock<Tache>();
Expect.Call( mouvement.Tache ).Return( tache );
Auch können Sie die AAA (Arrange-Act-Assert) Syntax für RhinoMocks -. ich glaube, dass StrictMock veraltet ist
Mouvement mouvement = MockRepository.GenerateMock<Mouvement>();
Tache tache = MockRepository.GenerateMock<Tache>();
mouvement.Expect( m => m.Tache ).Return( tache );
tache.Expect( t => t.Value ).Return( 100 ); // or whatever
... test code...
tache.VerifyAllExpectations();
mouvement.VerifyAllExpectations();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow