我正在尝试验证是否使用预期的对象参数调用了模拟中的方法。我正在使用 Moq、nUnit,并认为 AutoFixture 的 Likeness 应该可以完成工作。下面是我正在尝试做的简化版本。
有没有办法用 AutoFixture 做到这一点?有没有更好的方法来验证是否Something
使用适当的参数调用?
在类中覆盖 EqualsA
以比较属性值并将Verify
行更改为:
barMock.Verify(m => m.Something(a));
通过,但是我不想在我的项目中像 A 这样的每个类中覆盖 Equals 。
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
}
}
}