Dato il seguente test:AutoFixture: PropertyData e parametri eterogenei
[Theory]
[PropertyData("GetValidInputForDb")]
public void GivenValidInputShouldOutputCorrectResult(
string patientId
, string patientFirstName
)
{
var fixture = new Fixture();
var sut = fixture.Create<HtmlOutputBuilder>();
sut.DoSomething();
// More code
}
voglio incapsulare creazione appuntamento fisso nella sua stessa classe, qualcosa di simile a:
[Theory]
[CustomPropertyData("GetValidInputForDb")]
public void GivenValidInputShouldOutputCorrectResult(
string patientId
, string patientFirstName
, HtmlOutputBuilder sut
)
{
sut.DoSomething();
// More code
}
Il problema è che sono utilizzando PropertyData
e quest'ultimo fornisce due parametri di input. Il fatto che sto cercando di creare automaticamente il mio dispositivo come parametro sta causando un'eccezione.
Ecco la CustomPropertyData:
public class CustomPropertyDataAttribute : CompositeDataAttribute
{
public CustomPropertyDataAttribute(string validInput)
:base(new DataAttribute[]
{
new PropertyDataAttribute(validInput),
new AutoDataAttribute(new Fixture()
.Customize(new HtmlOutpuBuilderTestConvention())),
})
{
}
}
Quali sono le opzioni per risolvere questo?
Come appare il 'CustomPropertyData'? –
@NikosBaxevanis Ho aggiornato l'OP. Ho provato a scrivere il mio codice come da http://nikosbaxevanis.com/2012/07/27/composite-xunit-net-data-attributes/. – DavidS