我正在使用Moof的Autofixture向我的suts注入Moq。
我有以下类与构造函数:
public class Dummy{
public Dummy(){
}
public Dummy(IDummyData data){
}
}
我已使用AutoMoqCustomization
和GreedyConstructorQuery
在我的xUnit测试中配置了Fixture,如下所示。
[Fact]
public void ValidLoginShouldReturnAToken()
{
var fixture = new Fixture()
.Customize(new ConstructorCustomization(typeof(Dummy), new GreedyConstructorQuery()))
.Customize(new AutoMoqCustomization());
Dummy sut = fixture.Build<Dummy>().Create();
}
现在的问题是Dummy的实例是使用默认构造函数创建的。我希望实例由具有最多参数的构造函数创建,并且AutoMoq将为接口IDummyData
创建一个Mock,将其注入我的sut。
我的设置不正确吗?我的期望是错的吗?我是否需要先创建一个Mock并将其注册到我的Fixture?
答案 0 :(得分:4)
解决方案是RTFM。
使用Build<T>().Create()
次所有自定义设置。解决方案是直接在fixture上使用Create<T>()
来创建Dummy
。
[Fact]
public void ValidLoginShouldReturnAToken()
{
var fixture = new Fixture().Customize(new ConstructorCustomization(typeof(Dummy),
new GreedyConstructorQuery()))
.Customize(new AutoMoqCustomization());
Dummy sut = fixture.Create<Dummy>();
}