我有一个带有一些只读属性的接口:
interface IItem
{
string Name { get; }
// ... more properties
}
通过Fixture.Create()
method,我可以使用AutoMoqCustomization
类似的方法创建一个模拟的接口实例:
var fixture = new Fixture();
fixture.Customize(new AutoMoqCustomization());
var mockedItem = fixture.Create<IItem>();
但是要使用创建这些接口实例的列表Fixture.Build().CreateMany()
,我不能仅通过执行以下操作来做到这一点:
var mockedItems = fixture
.Build<IItem>()
.With(x => x.Name, "Abc")
.CreateMany();
我需要的原因Build()
是,我想为某个属性具有某个返回值,而其余的属性仍可以自动生成。但是不幸的是,根据文档,使用Build()
夹具上的所有自定义项时都会被绕过。
我正在使用以下版本:AutoFixture 4.8.0,AutoFixture.AutoMoq 4.8.0和Moq 4.9.0。
是否有一种简单的方法无需定义我自己的方法即可实现ISpecimenBuilder
?
可以从对象中提取模拟并进行配置
var mockedItems = fixture.CreateMany<IItem>(3);
foreach (var item in mockedItems) {
Mock<IItem> mock = Mock.Get(item);
mock.Setup(_ => _.Name).Returns("Abc");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句