J'essaie de vérifier qu'une méthode dans un mock est appelée avec un paramètre d'objet attendu. J'utilise Moq, nUnit, et je pense que l'apparence d'AutoFixture devrait faire le travail. Voici une version simplifiée de ce que j'essaie de faire.Utilisation de Verify pour confirmer les valeurs de paramètres attendues dans Moq Mock classe
Existe-t-il un moyen de faire cela avec AutoFixture? Existe-t-il un meilleur moyen de vérifier que Something
est appelée avec le paramètre approprié?
Redéfinition Equals dans la classe A
pour comparer les valeurs de propriété et de modifier la Verify
ligne:
barMock.Verify(m => m.Something(a));
passe, mais je préfère ne pas surcharger les méthodes equals dans chaque classe comme A dans mon projet.
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 particulier, la dernière solution est l'approche correcte avec la ressemblance. FWIW il y a un élément de travail pour une nouvelle fonctionnalité pour Likeness pour lui permettre d'émettre de façon dynamique un proxy qui écrase Equals, ce qui simplifierait grandement la syntaxe ci-dessus: http://autofixture.codeplex.com/workitem/4230 –
C'est fait, merci ! – jaminto