AutoFixture:PropertyData和异构参数
鉴于以下测试:
[Theory] [PropertyData("GetValidInputForDb")] public void GivenValidInputShouldOutputCorrectResult( string patientId , string patientFirstName ) { var fixture = new Fixture(); var sut = fixture.Create(); sut.DoSomething(); // More code }
我想将夹具创建封装在自己的类中,类似于:
[Theory] [CustomPropertyData("GetValidInputForDb")] public void GivenValidInputShouldOutputCorrectResult( string patientId , string patientFirstName , HtmlOutputBuilder sut ) { sut.DoSomething(); // More code }
问题是我正在使用PropertyData
而后者正在提供两个输入参数。 事实上,我正在尝试自动创建我的夹具作为参数导致exception。
这是CustomPropertyData:
public class CustomPropertyDataAttribute : CompositeDataAttribute { public CustomPropertyDataAttribute(string validInput) :base(new DataAttribute[] { new PropertyDataAttribute(validInput), new AutoDataAttribute(new Fixture() .Customize(new HtmlOutpuBuilderTestConvention() )), }) { } }
有什么方法可以解决这个问题?
您需要向PropertyDataAttribute
提供数据,如下所示:
public static IEnumerable
patientId
值为123 , patientFirstName
值为abc ,SUT值将由AutoFixture自动提供。
CustomPropertyDataAttribute
看起来不错。