Sto cercando di scoprire come posso prendere in giro un metodo che restituisce un valore diverso la seconda volta che viene chiamato al primo tempo. Ad esempio, qualcosa di simile:RhinoMocks - mocking un metodo il cui valore di ritorno cambia (anche quando ha passato lo stesso parametro) con più chiamate
public interface IApplicationLifetime
{
int SecondsSinceStarted {get;}
}
[Test]
public void Expected_mock_behaviour()
{
IApplicationLifetime mock = MockRepository.GenerateMock<IApplicationLifetime>();
mock.Expect(m=>m.SecondsSinceStarted).Return(1).Repeat.Once();
mock.Expect(m=>m.SecondsSinceStarted).Return(2).Repeat.Once();
Assert.AreEqual(1, mock.SecondsSinceStarted);
Assert.AreEqual(2, mock.SecondsSinceStarted);
}
C'è qualcosa che lo rende possibile? Oltre all'implementazione di un sub per il getter che implementa una macchina a stati?
Acclamazioni ragazzi,
Alex
Dai un'occhiata ai mock ordinati e non ordinati: http://ayende.com/wiki/Rhino%20Mocks%20Ordered%20and%20Unordered.ashx – Maciej
Cosa c'è di sbagliato nel codice che hai fornito? 'Repeat.Once()' dovrebbe funzionare –
@lazyberezovsky La prima chiamata a m.SecondsSinceStarted restituisce 2, non 1 come previsto – AlexC