J'arrive un peu tard, mais si vous voulez continuer à utiliser l'API de Moq, vous pouvez appeler la fonction Setup
dans l'action sur la finale Returns
appeler :
var mock = new Mock<IFoo>();
mock.SetupSequence(m => m.GetNumber())
.Returns(4)
.Returns(() =>
{
// Subsequent Setup or SetupSequence calls "overwrite" their predecessors:
// you'll get 1 from here on out.
mock.Setup(m => m.GetNumber()).Returns(1);
return 1;
});
var o = mock.Object;
Assert.Equal(4, o.GetNumber());
Assert.Equal(1, o.GetNumber());
Assert.Equal(1, o.GetNumber());
// etc...
Je voulais faire une démonstration en utilisant StepSequence
mais pour le cas spécifique du PO, vous pourriez simplifier et tout mettre dans un fichier de type Setup
méthode :
mock.Setup(m => m.GetNumber())
.Returns(() =>
{
mock.Setup(m => m.GetNumber()).Returns(1);
return 4;
});
J'ai tout testé ici avec xunit@2.4.1 y Moq@4.14.1 - passe ✔