Ich würde gerne wissen, wie Sie mit so etwas umgehen. Was ist die beste Praxis ..RhinoMock - Mehrere Erwartungen in einer Methode - Best Practice
Lest sagen, dass ich eine Methode namens Last auf einem Moderator Objekt haben
zunächst sieht das Verfahren wie folgt aus:
public void Load(ViewMode mode, int? id)
{
if(mode == ViewMode.Modify)
view.CurrentEntity = model.GetMyEntityById(id.GetValueOrDefault(0));
else
view.CurrentEntity = model.CreateNewEntity();
}
diesen Code zu testen Ich habe 2 Tests mit RhinoMock Setup Erwartungen
[TestMethod]
public void Load_ShouldCallModelToGetEntityIfViewModeEqualsModify()
{
IView view = _mockery.StrictMock<IView>();
IModel model = _mockery.StrictMock<IModel>();
Entity e = new Entity()
using(_mockery.Ordered())
{
Expec.Call(model.GetMyEntityById(3)).Return(e)
view.CurrentEntity = e;
}
_mockery.ReplayAll()
Presenter sut = new Presenter(view, model);
sut.Load(ViewMode.Modify, 3);
_mockery.VerifyAll();
}
Und ich habe ich dann einen anderen Test, der den anderen Weg für die ViewMode.Add testen ...
So ist meine Frage, ob ich die Load-Methode auf den Vortragenden zu aussehen wie
public void Load(ViewMode mode, int? id)
{
view.CollectionA = model.GetListOfA(); <------ADDED THIS
view.CollectionB = model.GetListOfB(); <------AND THIS
if(mode == ViewMode.Modify)
view.CurrentEntity = model.GetMyEntityById(id.GetValueOrDefault(0));
else
view.CurrentEntity = model.CreateNewEntity();
}
jetzt geändert Ich habe die Erwartung für beide GetList Methoden in allen meinen vorherigen Test hinzuzufügen, oder es wird in 0 Actual Erwartete Ergebnisse 1. Auch ich werde meinen Testnamen ändern müssen, weil ich im Test weit mehr erwarte, als nur das Modell anzurufen, um eine Entity durch seine ID zu erhalten.
Also gibt es eine beste Praxis dafür. Ist das Ändern all meiner Tests der richtige Weg, Dinge zu tun, wenn ich Aufrufe zu einigen Mocks hinzufüge, oder es gibt eine Möglichkeit, nur einige Aufrufe für vorherige Tests zu erwarten und einen weiteren Test hinzuzufügen, der etwa so aussehen würde: [TestMethod] public void Load_ShouldCallModelToObtainAListOfA();
und es würde nicht meine anderen Tests zum Scheitern bringen.
Ich weiß, es ist eine vage Frage, aber wenn jemand versteht, was ich bitte, sag mir bitte, wie du mit Verhaltenstests mit dieser Art von Situation umgehst.
Vielen Dank Breach
Vielen Dank für Ihre Antwort. Es hat meine Frage perfekt beantwortet – Breach