c# – 如何使用AutoFixture与NSubstitute的示例
|
我使用NSubstitute很多.我爱它
我只是看AutoFixture.看起来很棒! 我已经看到了AutoFixture for NSubstitute,并在Moq中看到了一些关于如何使用这个功能的例子. 但我似乎无法将其翻译成NSubstitute. 我试过这个: var fixture = new Fixture().Customize(new AutoNSubstituteCustomization()); var addDest = Substitute.For<IPerson>(); 使用: public interface IPersonEntity
{
int ID { get; set; }
string FirstName { get; set;}
string LastName { get; set;}
DateTime DateOfBirth { get; set; }
char Gender { get; set; }
}
我得到一个对象,但是没有一个属性被填充(类型为AutoFixture). 我也试过: var fixture = new Fixture().Customize(new AutoNSubstituteCustomization()); var result = fixture.Create<IPersonEntity>(); 这也给了我一个没有人口稠密属性的对象. (注意,如果我使用PersonEntity类执行上述操作,则所有属性都将被填充.) 我相信有办法使这项工作,但我似乎找不到. 所以,考虑到我的IPersonEntity接口,有谁知道如何使用AutoFixture和NSubstitute给我一个填充IPersonEntity对象? 解决方法
您可以使用AutoNSubstituteCustomization自定义Fixture实例,而不是使用以下定制:
var fixture = new Fixture().Customize(
new AutoPopulatedNSubstitutePropertiesCustomization());
var result = fixture.Create<IPersonEntity>();
// -> All properties should be populated now.
AutoPopulatedNSubstitutePropertiesCustomization定义为: internal class AutoPopulatedNSubstitutePropertiesCustomization
: ICustomization
{
public void Customize(IFixture fixture)
{
fixture.ResidueCollectors.Add(
new Postprocessor(
new NSubstituteBuilder(
new MethodInvoker(
new NSubstituteMethodQuery())),new AutoPropertiesCommand(
new PropertiesOnlySpecification())));
}
private class PropertiesOnlySpecification : IRequestSpecification
{
public bool IsSatisfiedBy(object request)
{
return request is PropertyInfo;
}
}
}
与AutoNSubstituteCustomization的区别在于,上述定制也是decorated,后处理器实例自动设置所请求类型的所有公共属性的值. 参考文献: 上述解决方案的灵感来自以下博客文章Mark Seemann: > How to configure AutoMoq to set up all properties (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
