Estoy intentando verificar que se llame a un método dentro de una simulación con un parámetro de objeto esperado. Estoy usando Moq, nUnit y pensando que la semejanza de AutoFixture debería hacer el trabajo. A continuación se muestra una versión simplificada de lo que estoy tratando de hacer.Uso de Verificar para confirmar los valores de los parámetros esperados en la clase simulada de Moq
¿Hay alguna manera de hacer esto con AutoFixture? ¿Hay una mejor manera de verificar que se llame al Something
con el parámetro apropiado?
Anulación es igual en la clase A
para comparar los valores de las propiedades y cambiar la línea Verify
a:
barMock.Verify(m => m.Something(a));
pases, sin embargo yo prefiero no sobrescribe equals en cada clase como A en mi proyecto.
namespace Test
{
using Moq;
using NUnit.Framework;
using Ploeh.SemanticComparison.Fluent;
public class A
{
public int P1 { get; set; }
}
public interface IBar
{
void Something(A a);
}
public class Foo
{
public A Data { get; private set; }
public void DoSomethingWith(IBar bar)
{
Data = new A { P1 = 1 };
bar.Something(Data);
}
}
[TestFixture]
public class AutoFixtureTest
{
[Test]
public void TestSample()
{
var foo = new Foo();
var barMock = new Mock<IBar>();
var a = new A { P1 = 1 };
var expectedA = a.AsSource().OfLikeness<A>();
foo.DoSomethingWith(barMock.Object);
expectedA.ShouldEqual(foo.Data); // passes
barMock.Verify(m => m.Something(expectedA.Value)); // fails
}
}
}
+1 En particular, la última solución es el enfoque correcto con Semejanza. FWIW hay un elemento de trabajo para una nueva funcionalidad de Likeness que le permite emitir dinámicamente un proxy que anula Equals, lo que simplificaría en gran medida la sintaxis anterior: http://autofixture.codeplex.com/workitem/4230 –
Eso lo hizo, gracias ! – jaminto