【发布时间】:2012-01-16 17:16:07
【问题描述】:
我正在尝试验证模拟中的方法是否使用预期的对象参数调用。我正在使用 Moq、nUnit,并认为 AutoFixture 的 Likeness 应该可以完成工作。 下面是我正在尝试做的简化版本。
有没有办法用 AutoFixture 做到这一点?有没有更好的方法来验证 Something 是否使用适当的参数调用?
覆盖A 类中的Equals 以比较属性值并将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
}
}
}
【问题讨论】:
标签: nunit moq autofixture