给定以下测试:
[Theory]
[PropertyData("GetValidInputForDb")]
public void GivenValidInputShouldOutputCorrectResult(
string patientId
, string patientFirstName
)
{
var fixture = new Fixture();
var sut = fixture.Create<HtmlOutputBuilder>();
sut.DoSomething();
// More code
}
我想将夹具创建封装在它自己的类中,类似于:
[Theory]
[CustomPropertyData("GetValidInputForDb")]
public void GivenValidInputShouldOutputCorrectResult(
string patientId
, string patientFirstName
, HtmlOutputBuilder sut
)
{
sut.DoSomething();
// More code
}
问题是我正在使用PropertyData
,后者提供了两个输入参数。然后我试图自动创建我的夹具作为参数的事实导致异常。
这是自定义属性数据:
public class CustomPropertyDataAttribute : CompositeDataAttribute
{
public CustomPropertyDataAttribute(string validInput)
:base(new DataAttribute[]
{
new PropertyDataAttribute(validInput),
new AutoDataAttribute(new Fixture()
.Customize(new HtmlOutpuBuilderTestConvention() )),
})
{
}
}
解决此问题的选项有哪些?