AutoFixture为Moq&#39?ed接口上的所有值返回空值

时间:2017-10-12 11:07:45

标签: c# unit-testing moq autofixture

我使用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上的任何属性。我猜测我错过了一些明显的东西?

1 个答案:

答案 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,而是将其与显式配置对相关测试有关的行为进行组合。

另见How to configure AutoMoq to set up all properties