Moq überschreiben vorherigen setup?

Hallo, ich bin versucht, in ein mock einer Klasse die Methode mit zwei möglichen Eingaben. Wenn ich die Ausgabe nur den letzten Satz bis Rückkehr erwartete Ausgabe. Die erste nicht. Jede Hilfe wird sehr geschätzt.

[Test]
public void ClimbOnceTwoNeighbour_Sample()
{
    stateConverter = new Mock<StateConverter>();

    solution = new Mock<Solution>();
    state = new Mock<State>();

    var neightbourSolution1 = new Mock<Solution>();
    var neighbourState1 = new Mock<State>();
    var neightbourSolution2 = new Mock<Solution>();
    var neighbourState2 = new Mock<State>();

    stateConverter.Setup(x => x.FromSolution(neightbourSolution1.Object, It.IsAny<State>())).Returns(neighbourState1.Object);
    stateConverter.Setup(x => x.FromSolution(neightbourSolution2.Object, It.IsAny<State>())).Returns(neighbourState2.Object);

    var state1 = stateConverter.Object.FromSolution(neightbourSolution1.Object, state.Object);//return null ????
    var state2 = stateConverter.Object.FromSolution(neightbourSolution2.Object, state.Object);//return neighbourState2.Object)


    Assert.AreEqual(neighbourState2.Object, state2);//pass test here
    Assert.AreEqual(neighbourState1.Object, state1);//fail here due to null is returned from previous statement

}
  • Ich schlage vor, Sie teilen Sie diesen test in zwei verschiedenen tests, eine für jede Art von input. Einfachheit ist der Schlüssel mit unit-tests.
  • Ich danke Ihnen sehr für Ihren Kommentar. Dies ist nicht ein Haupt Teil will ich testen, allerdings ist dieser Codeausschnitt Effekt auf das Ergebnis des test. 🙁
  • Ich habe die Ursache gefunden-Problem ist allerdings das ich immer noch nicht sicher, wie es zu lösen ist. Wenn der Projektmappen-Klasse hat benutzerdefinierte Gleichheit Umsetzung der Moq funktioniert nicht. Jede Idee, bitte?
InformationsquelleAutor duongthaiha | 2014-02-04
Schreibe einen Kommentar