Tengo una prueba como esta:
[TestCase("~/page/myaction")]
public void Page_With_Custom_Action(string path) {
// Arrange
var pathData = new Mock<IPathData>();
var pageModel = new Mock<IPageModel>();
var repository = new Mock<IPageRepository>();
var mapper = new Mock<IControllerMapper>();
var container = new Mock<IContainer>();
container.Setup(x => x.GetInstance<IPageRepository>()).Returns(repository.Object);
repository.Setup(x => x.GetPageByUrl<IPageModel>(path)).Returns(() => pageModel.Object);
pathData.Setup(x => x.Action).Returns("myaction");
pathData.Setup(x => x.Controller).Returns("page");
var resolver = new DashboardPathResolver(pathData.Object, repository.Object, mapper.Object, container.Object);
// Act
var data = resolver.ResolvePath(path);
// Assert
Assert.NotNull(data);
Assert.AreEqual("myaction", data.Action);
Assert.AreEqual("page", data.Controller);
}
GetPageByUrl
funciona dos veces en mi DashboardPathResolver
, ¿cómo puedo decirle a Moq que regrese null
la primera y pageModel.Object
la segunda?
fuente
SetupSequence()
no funciona conCallback()
. Si solo lo hiciera, uno podría verificar las llamadas al método simulado en una forma de "máquina de estado".SetupSequence
solo funciona para dos llamadas, pero ¿qué puedo hacer si necesito más de dos llamadas?SetupSequence
se puede usar para un número arbitrario de llamadas. El primer ejemplo que di devuelve una secuencia de 5 llamadas.