相关疑难解决方法(0)

AutoFixture:PropertyData和异构参数

鉴于以下测试:

[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)

有什么方法可以解决这个问题?

c# xunit.net autofixture

5
推荐指数
1
解决办法
443
查看次数

如何在xunit/autofixture中组合PropertyData和AutoNSubstituteData属性?

我正在使用[AutoNSubstituteData]这里发布的属性:

AutoFixture,xUnit.net和Auto Mocking

我想将它与[PropertyData("")]xunit扩展的属性结合起来.

这是我的测试:

public static IEnumerable<string[]> InvalidInvariant
{
    get
    {
        yield return new string[] { null };
        yield return new [] { string.Empty };
        yield return new [] { " " };
    }
}

[Theory, AutoNSubstituteData, PropertyData("InvalidInvariant")]
public void TestThatGuardsAreTriggeredWhenConnectionStringArgumentIsInvalid(
    IDeal deal,
    IDbConnection conn,
    IDb db,
    ISender sender,
    string invalidConnString,
    string query)
{
    deal.Init.Group.Returns(Group.A);
    deal.Aggr.Group.Returns(Group.A);
    deal.Product.Commodity.Returns(Product.Commodity.E);

    var sut = new Handler(db, sender);
    Assert.Throws<ArgumentException>(() => 
        sut.HandleDeal(deal, conn, invalidConnString, query));
}
Run Code Online (Sandbox Code Playgroud)

有没有办法组合这些属性或获得所需的功能(模拟一切,除了invalidConnstring,应该填充属性数据)?

unit-testing mocking xunit.net autofixture nsubstitute

5
推荐指数
2
解决办法
2304
查看次数

标签 统计

autofixture ×2

xunit.net ×2

c# ×1

mocking ×1

nsubstitute ×1

unit-testing ×1