2014-10-23 13 views
5

के साथ स्वत: कॉन्फ़िगर किया गया मल्टी कस्टमाइज़ेशन मैं ऑटोफिक्चर 3.21.0, ऑटोफिक्चर.ऑटोमोक 3.21.0, न्यूट 2.6.3 और मोक 4.2.1409.1722 का उपयोग करता हूं।अमूर्त वर्ग कार्यान्वयन इंटरफ़ेस

मेरे पास निम्न इंटरफ़ेस है, दो सार कक्षाएं (उनमें से एक इस इंटरफ़ेस को लागू करती है), और दो यूनिट परीक्षण।

टेस्ट पास।

public interface IMigration 
    { 
     IMigrationParameters MigrationParameters { get; set; } 
    } 

    public abstract class AbstractSutWithoutInterface 
    { 
     public IMigrationParameters MigrationParameters { get; set; } 
    } 

    public abstract class AbstractSutWithInterface : IMigration 
    { 
     public IMigrationParameters MigrationParameters { get; set; } 
    } 

    [TestFixture] 
    public class UnitTests 
    { 
     [Test] 
     public void TestAbstractSutWithoutInterface() 
     { 
      var fixture = new Fixture(); 
      fixture.Customize(new AutoConfiguredMoqCustomization()); 

      var mock = fixture.Create<AbstractSutWithoutInterface>(); 

      Assert.IsNotNull(mock.MigrationParameters); // test passes 
     } 

     [Test] 
     public void TestAbstractSutWithInterface() 
     { 
      var fixture = new Fixture(); 
      fixture.Customize(new AutoConfiguredMoqCustomization()); 

      var mock = fixture.Create<AbstractSutWithInterface>(); 

      Assert.IsNull(mock.MigrationParameters); // test passes 
     } 
    } 

मेरा प्रश्न क्यों AutoConfiguredMoqCustomization है कि प्रॉपर्टी के आधार पर सार कक्षाओं के लिए अलग व्यवहार इंटरफ़ेस द्वारा या नहीं परिभाषित किया गया है है? पहली टेस्ट संपत्ति में शून्य नहीं होने के लिए कहा जाता है लेकिन दूसरे परीक्षण में शून्य है। यदि कक्षाएं अमूर्त नहीं हैं, तो संपत्ति इंजेक्शन दोनों वर्गों के लिए अपेक्षित काम करता है।

+1

क्या वे कक्षाएं 'अमूर्त' कीवर्ड गायब हैं? –

+0

@PatrickQuirk स्रोत कोड में अनुपलब्ध कीवर्ड को इंगित करने के लिए धन्यवाद। मैंने इसे सही किया है। – sgnsajgon

+0

मैं पुन: उत्पन्न नहीं कर सकता, दोनों मामलों में वे मेरे लिए शून्य नहीं हैं। मैं नवीनतम ऑटोफिक्शन संस्करण का उपयोग कर रहा हूं, जिसका आप उपयोग कर रहे हैं? –

उत्तर

5

अद्यतन 2015/04/15

इस बग AutoFixture.AutoMoq 3.24.2 में तय किया गया है। विवरण देखें here

अद्यतन 2014/11/03

यह अब AutoFixture के GitHub, Issue 324 पर नज़र रखी जा रही है।

इसके अलावा, Moq का अंतिम कार्य संस्करण 4.2.1402.2112 है, आप 4.0 के बजाय उस पर डाउनग्रेड कर सकते हैं।


मैं इसे केवल Moq (4.2.1409.1722) के नवीनतम संस्करण के साथ पुन: उत्पन्न कर सकता हूं।

मैं अभी इस पर देख रहा हूं, और यह seeeeems एक बग की तरह Moq के नवीनतम संस्करण में पेश किया गया है, लेकिन यह डिज़ाइन द्वारा हो सकता है, मुझे अभी तक यकीन नहीं है।

इस बीच, कृपया संस्करण 4.0.10827 का उपयोग करें। डाउनग्रेड करने के लिए, टूल्स -> NuGet पैकेट प्रबंधक -> पैकेज प्रबंधक कंसोल और प्रकार:

Uninstall-Package Moq -Force 
Install-Package Moq -Version 4.0.10827 

मैं अपने निष्कर्ष के साथ इस सवाल का जवाब अपडेट करेंगे।

संबंधित मुद्दे