2013-05-30 14 views
5

:AutoFixture: PropertyData ve heterojen parametreler aşağıdaki test Verilen

[Theory] 
[PropertyData("GetValidInputForDb")] 
public void GivenValidInputShouldOutputCorrectResult(
    string patientId 
    , string patientFirstName 
) 
{ 
    var fixture = new Fixture();   

    var sut = fixture.Create<HtmlOutputBuilder>(); 

    sut.DoSomething(); 
    // More code 
} 

Ben kendi sınıfında fikstürü oluşturulmasını encapsulate istiyorum benzer bir şey:

[Theory] 
[CustomPropertyData("GetValidInputForDb")] 
public void GivenValidInputShouldOutputCorrectResult(
    string patientId 
    , string patientFirstName 
    , HtmlOutputBuilder sut 
) 
{ 
    sut.DoSomething(); 
    // More code 
} 

Sorun olduğum PropertyData kullanarak ve ikinci iki giriş parametresi sağlıyor. Ardından otomatik olarak fikstürümü bir parametre olarak oluşturmaya çalışmam, bir istisna oluşturuyor. Bu sorunu çözmek için seçenekler nelerdir

public class CustomPropertyDataAttribute : CompositeDataAttribute 
{ 
    public CustomPropertyDataAttribute(string validInput) 
     :base(new DataAttribute[] 
      { 
       new PropertyDataAttribute(validInput), 
       new AutoDataAttribute(new Fixture() 
        .Customize(new HtmlOutpuBuilderTestConvention())), 
      }) 
    { 

    } 
} 

: Burada

CustomPropertyData nedir?

+0

'CustomPropertyData' nasıl görünüyor? –

+0

@NikosBaxevanis OP'yi güncelledim. Kodumu http://nikosbaxevanis.com/2012/07/27/composite-xunit-net-data-attributes/ adresine yazmayı denedim. – DavidS

cevap

3

Sen olarak aşağıda PropertyDataAttribute veri sağlamak gerekir: patientId değeri olacak

public static IEnumerable<object[]> GetValidInputForDb 
{ 
    get 
    { 
     yield return new object[] 
     { 
      "123", 
      "abc" 
     }; 
    } 
} 

, patientFirstName değeri abc olacak ve SUT değeri tarafından otomatik sağlanacak gidiyor AutoFixture.

CustomPropertyDataAttribute iyi görünüyor.

+0

Tamam, çizim tahtasına geri dönmeme izin verin çünkü önerdiğin şeyi yaptım. Ancak bir istisna aldım. Tekrar deneyeceğim ve gerektiğinde onu ele geçirmeye çalışacağım. Yardım ettiğin için teşekkür ederim. – DavidS

+0

'HtmlOutpuBuilderTestConvention' ya da xUnit.net forumlarında 'PropertyDataAttribute' öğesini hedefleyen bir soruyla ilgili bir sorun var gibi görünüyor. 'HtmlOutputBuilder' ile 'IDisposable' ve 'HtmlOutpuBuilderTestConvention' yerine "AutoMoqCustomization" ile test edebilirsiniz. Testin yürüdüğünü gör. –

+0

Tavsiye için teşekkürler. Hala önerilerinizi denemeliyim ama neyin yanlış olduğunu anladığımda size geri döneceğim. – DavidS

İlgili konular