我使用AutoFixture来填充一个相当庞大的界面对象,但是我为每个属性获取了一个null(或默认值)。我试过了两个:
var fixture = new Fixture();
var input = fixture.Create<Mock<ICustomer>>();
和
var fixture = new Fixture();
fixture.Register(() => Mock.Of<ICustomer>());
var input = fixture.Create<ICustomer>();
在这两种情况下,都不会填充生成的ICustomer
上的任何属性。我猜测我错过了一些明显的东西?
答案 0 :(得分:3)
您可以使用AutoFixture.AutoMoq包:
[Fact]
public void HowToCreateAnAutoConfiguredMoq()
{
var fixture = new Fixture().Customize(new AutoConfiguredMoqCustomization());
var c = fixture.Create<ICustomer>();
Assert.NotEqual(default(string), c.Name);
}
就个人而言,我不是AutoConfiguredMoqCustomization
的忠实粉丝,因为我认为它使测试过于含蓄。我相信explicit is better than implicit,所以我通常更喜欢使用AutoMoqCustomization
,而是将其与显式配置对相关测试有关的行为进行组合。