加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – AutoFixture:PropertyData和异构参数

发布时间:2020-12-15 05:38:34 所属栏目:百科 来源:网络整理
导读:鉴于以下测试: [Theory][PropertyData("GetValidInputForDb")]public void GivenValidInputShouldOutputCorrectResult( string patientId,string patientFirstName){ var fixture = new Fixture(); var sut = fixture.CreateHtmlOutputBuilder(); sut.DoSom
鉴于以下测试:
[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,后者提供两个输入参数.事实上,我正在尝试自动创建我的夹具作为参数导致异常.

这是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<object[]> GetValidInputForDb 
{
    get
    {
        yield return new object[]
        {
            "123","abc"
        };
    }
}

patientId值为123,patientFirstName值为abc,AutoFixture将自动提供SUT值.

CustomPropertyDataAttribute看起来不错.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读