Я пытаюсь проверить, что метод внутри mock вызывается с ожидаемым параметром объекта. Я использую Moq, nUnit и думаю, что AutoFixture Likeness должен выполнить свою работу. Ниже приведен упрощенный вариант того, что я пытаюсь сделать.
Есть ли способ сделать это с помощью AutoFixture? Есть ли лучший способ проверить, что Something вызывается с соответствующим параметром?
Переопределение равных в классе A для сравнения значений свойств и изменения строки Verify на:
barMock.Verify(m => m.Something(a));
но я бы предпочел не переопределять Equals в каждом классе, таком как A в моем проекте.
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
        }
    }
}
