Dav*_*idS 5 c# xunit.net autofixture
鉴于以下测试:
[Theory]
[PropertyData("GetValidInputForDb")]
public void GivenValidInputShouldOutputCorrectResult(
string patientId
, string patientFirstName
)
{
var fixture = new Fixture();
var sut = fixture.Create<HtmlOutputBuilder>();
sut.DoSomething();
// More code
}
Run Code Online (Sandbox Code Playgroud)
我想将夹具创建封装在自己的类中,类似于:
[Theory]
[CustomPropertyData("GetValidInputForDb")]
public void GivenValidInputShouldOutputCorrectResult(
string patientId
, string patientFirstName
, HtmlOutputBuilder sut
)
{
sut.DoSomething();
// More code
}
Run Code Online (Sandbox Code Playgroud)
问题是我正在使用PropertyData,后者提供两个输入参数.事实上,我正在尝试自动创建我的夹具作为参数导致异常.
这是CustomPropertyData:
public class CustomPropertyDataAttribute : CompositeDataAttribute
{
public CustomPropertyDataAttribute(string validInput)
:base(new DataAttribute[]
{
new PropertyDataAttribute(validInput),
new AutoDataAttribute(new Fixture()
.Customize(new HtmlOutpuBuilderTestConvention() )),
})
{
}
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以解决这个问题?
PropertyDataAttribute您需要向以下提供数据:
public static IEnumerable<object[]> GetValidInputForDb
{
get
{
yield return new object[]
{
"123",
"abc"
};
}
}
Run Code Online (Sandbox Code Playgroud)
该patientId值将为123,该patientFirstName值将为abc,并且 SUT 值将由 AutoFixture 自动提供。
看起来CustomPropertyDataAttribute不错。
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |