Sto provando a verificare che un metodo all'interno di una simulazione venga chiamato con un parametro oggetto previsto. Sto usando Moq, nUnit, e penso che la somiglianza di AutoFixture dovrebbe portare a termine il lavoro. Di seguito è una versione semplificata di quello che sto cercando di fare.Utilizzo di Verifica per confermare i valori dei parametri previsti nella classe Mock Moq
C'è un modo per farlo con AutoFixture? C'è un modo migliore per verificare che Something
venga chiamato con il parametro appropriato?
Override Equals nella classe A
per confrontare i valori delle proprietà e cambiando la linea Verify
a:
barMock.Verify(m => m.Something(a));
passaggi, però preferirei non sovrascrive equals in ogni classe come A nel mio progetto.
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 In particolare, l'ultima soluzione è l'approccio corretto con Likeness. FWIW c'è un elemento di lavoro per una nuova funzionalità per Likeness che consente di emettere dinamicamente un proxy che esegue l'override di Equals, il che semplificherebbe enormemente la sintassi precedente: http://autofixture.codeplex.com/workitem/4230 –
Questo l'ha fatto, grazie ! – jaminto