Objetos zombeteiros contendo subobjetos com zombarias de rinocerontes
-
08-07-2019 - |
Pergunta
Assumindo um objeto de imuimento que contém alguns subobjetos, como o ITACHE, ISTOCKPALETTE.
public interface IMouvement : IObjectBase<Guid>
{
ITache Tache { get; set; }
IStockPalette StockPalOrigine { get; set; }
}
Como posso zombar disso usando rinoceronte zombar?
Assumindo este teste, o que há de errado com isso?
[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);
}
Este teste sempre falha ..
Solução
Normalmente, eu configuria expectativas nos objetos simulados, em vez de apenas atribuir suas propriedades.
Tache tache = mocks.StrictMock<Tache>();
Expect.Call( mouvement.Tache ).Return( tache );
Além disso, você pode querer usar o Aaa (Arranje-ACT-Ascret) Sintaxe para Rhinomocks-Acredito que o Strictmock tenha sido descontinuado.
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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow