validación validacion tipos sistemas simulación simulacion proceso modelos metodo medica elementos definicion .net mocking

.net - validacion - tipos de simulacion



¿Cómo puedo escribir simulaciones que capturan los parámetros del método y examinarlos más tarde? (3)

Creo que estás buscando algo equivalente a la devolución de llamada de Moq:

var foo = Mock<Foo>(); var service = Mock<IService>(); service.Setup(s => s.Create(foo.Object)).Callback((T foo) => Assert.AreEqual("USD", foo.Currency)) service.Object.Create(new Foo { Currency = "USD" });

Estoy buscando una forma de capturar el parámetro real pasado al método para examinarlo más tarde. La idea es obtener el parámetro pasado y luego ejecutar afirmaciones contra él.

Por ejemplo:

var foo = Mock<Foo>(); var service = Mock<IService>(); service.Expect(s => s.Create(foo)); service.Create(new Foo { Currency = "USD" }); Assert(foo.Object.Currency == "USD");

O un ejemplo un poco más complejo:

Foo foo = new Foo { Title = "...", Description = "..." }; var bar = Mock.NewHook<Bar>(); var service = new Mock<IService>(); service.Expect(s => s.Create(bar)); new Controller(service.Object).Create(foo); Assert(foo.Title == bar.Object.Title); Assert(foo.Description == bar.Object.Description);


Si necesita afirmar en el parámetro pasado a un objeto, parece que está sometiendo el objeto equivocado a su prueba. En lugar de afirmar los parámetros pasados ​​a un método, escriba una prueba para la clase de llamada que afirma que se pasan los parámetros correctos.


Consulte también la sección "Devolución de llamada" en la documentación de inicio rápido de Moq :

// access invocation arguments mock.Setup(foo => foo.Execute(It.IsAny<string>())) .Returns(true) .Callback((string s) => calls.Add(s));