Я пытаюсь проверить, что метод внутри 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
}
}
}