AutoFixture 为 Moq 接口上的所有值返回空值
AutoFixture returning nulls for all values on a Moq'ed interface
我正在使用 AutoFixture 来填充一个相当大的接口对象,但我得到的每个 属性 都是空值(或默认值)。我都试过了:
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
上的 none 个属性都被填充。我猜我错过了一些明显的东西?
您可以为此使用 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
,并将其与显式配置那些对相关测试重要的行为相结合。
我正在使用 AutoFixture 来填充一个相当大的接口对象,但我得到的每个 属性 都是空值(或默认值)。我都试过了:
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
上的 none 个属性都被填充。我猜我错过了一些明显的东西?
您可以为此使用 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
,并将其与显式配置那些对相关测试重要的行为相结合。