6

में न्यूटिट डायनामिकमैक इंस्टेंस पंजीकृत करना मैं एकता और निर्भरता इंजेक्शन के लिए कुछ नया हूं।यूनिटीकॉन्टेनर

[Test] 
public void Test() 
{ 
    UnityContainer container = new UnityContainer(); 
    DynamicMock myMock = new DynamicMock(typeof(IMyInterface)); 
    container.RegisterInstance(typeof(IMyInterface), myMock.MockInstance); //Error here 

    // Continue unit test... 
} 

जब इस परीक्षण को निष्पादित करता है, कंटेनर संदेश Value cannot be null. Parameter name: assignmentValueType.

ढेर के शीर्ष लाइन के साथ RegisterInstance विधि के अंदर एक ArgumentNullException फेंकता है: मैं एक इकाई परीक्षण है कि कुछ इस तरह चला जाता है लिखने के लिए कोशिश कर रहा हूँ ट्रेस at Microsoft.Practices.Unity.Utility.Guard.TypeIsAssignable(Type assignmentTargetType, Type assignmentValueType, String argumentName) है।

मैं यूनिटीकॉन्टेनर के साथ एक नकली प्रवेश क्यों पंजीकृत नहीं कर सकता, और मैं इसके आसपास कैसे काम करूं?

+0

संबंधित: http://stackoverflow.com/questions/2098937/proper-way-to-mock-repository-objects-for-unit-tests-using-moq-and-unity/2102104 –

+0

क्या आपने अपना प्रश्न पूछा है यूनिटी कोडप्लेक्स साइट पर? http://unity.codeplex.com/ आपको वहां एक उत्तर मिल सकता है। –

उत्तर

3

मैं इसे नहीं देख रहा हूं। मैं NUnit 2.5.5.10112 और Unity 2.0 (जो एंटीलिब के साथ जहाजों का उपयोग कर रहा हूं, अलग-अलग रिलीज अभी तक उपलब्ध नहीं है) का उपयोग कर रहा हूं।

अद्यतन: मैंने अभी 1.2 के साथ जांच की है और मैं आपका व्यवहार देखता हूं। तो यह 1.2 के साथ एक मुद्दा है।

namespace UnityRepro 
{ 
    public interface IMyInterface 
    { 
     void Foo(); 
    } 

    public class Class1 
    { 
     [Fact] 
     public void Test() 
     { 
      UnityContainer container = new UnityContainer(); 
      DynamicMock myMock = new DynamicMock(typeof(IMyInterface)); 
      container.RegisterInstance(typeof(IMyInterface), myMock.MockInstance); //Error here 

      Assert.NotNull(container.Resolve<IMyInterface>()); 
     } 
    } 
} 

क्या आपके लिए यूनिटी 2.0 में अपडेट करना संभव होगा? यदि नहीं, तो मैं गहरी कोशिश करूँगा और पता लगाऊंगा कि वास्तव में क्या चल रहा है। हालांकि यह 1.2 की सीमा हो सकती है।

+0

यह स्पष्ट है कि आपने इसकी जांच के लिए अपने दिन से कुछ समय निकाल लिया। बहुत बहुत धन्यवाद। – Phil