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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |