मैं DI आईओसी के लिए एक वेब प्रोजेक्ट में स्ट्रक्चर मैप का उपयोग कर रहा हूं। यह सही काम करता है, लेकिन मुझे कोई संकेत नहीं है कि स्ट्रक्चर मैप के साथ यूनिट परीक्षण कैसे लिखें।यूनिट परीक्षणों के साथ स्ट्रक्चर मैप का उपयोग
मैं AssemblyInitialize में ऐसा करना चाहिए Global.asax में तरह StructureMap का विन्यास शुरू छोड़कर DataContext के लिए लाइव LinqToSqlDataContext लेकिन इस तरह की कुछ स्मृति डेटा का उपयोग नहीं:
[AssemblyInitialize]
public static void Start()
{
ObjectFactory.Configure(x =>
{
x.For<IDataContext>().HttpContextScoped().Use<MemoryDataContext>()
.Ctor<string>("connectionString")
.Is(ConfigurationManager.ConnectionStrings["DEVConnection"].ConnectionString);
x.For<IDepartamentRepository>().Use<DepartamentDB>();
x.For<IDevelopmentProcess>().Use<DevelopmentProcesses>().OnCreation(c => c.User = Current.CurrentUser);
x.For<IActivityProcess>().Use<ActivitiesProcess>().OnCreation(c=> c.User = Current.CurrentUser);
x.For<IDevDeveloperRepository>().Use<DevDeveloperDB>();
x.For<IDevelopmentRepository>().Use<DevelopmentDB>();
x.For<IActivityRepository>().Use<ActivityDB>();
x.For<IActivityTypeRepository>().Use<ActivityTypeDB>();
x.For<IDevUserRepository>().Use<DevUsersDB>();
x.For<IAttachmentRepository>().Use<AttachmentDB>();
}
);
}
और फिर ObjectFactory.GetInstance का उपयोग करें() परीक्षण या मैं यह कैसे करूँ?
मैं इससे सहमत है, लेकिन क्या अगर मैं एक वर्ग है कि कई उदाहरण खपत है सब मैं करूंगा DI का उपयोग करके स्वैप मेमोरी रिपोजिटरी में उपयोग करने के लिए डीएएल कहें। यदि मेरा कन्स्ट्रक्टर 10 इंटरफेस लेता है तो मुझे DI का उपयोग करते समय मैन्युअल रूप से 10 उदाहरण प्रदान करने की आवश्यकता होती है, सभी स्वचालित रूप से किए जाते हैं। यहां तक कि अगर मैं एक में 10 इंटरफेस की रचना तैयार करता हूं, तो मुझे अभी भी इसे किसी भी तरह से नकल करने की ज़रूरत है ... –
@PawelCioch यदि आपका कन्स्ट्रक्टर दस निर्भरता लेता है, तो यह [शायद बहुत अधिक कर रहा है] (http://stackoverflow.com/a/2420245/126,014)। न केवल यह एक डिजाइन गंध है, यह भी संभावना है कि परीक्षण करना मुश्किल होगा, या कम से कम परीक्षणों को बनाए रखने के लिए। –
मुझे लगता है कि मुझे सरल परियोजनाओं के साथ काम करने के लिए नौकरी बदलनी होगी :)। वह वर्ग जो उन सभी को लेता है वह कंसोल ऐप के लिए अंतिम सेवा है जिसे सभी प्रकार की रिपॉजिटरीज और फ़िल्टर की आवश्यकता होती है। शायद फिर से कारक हो सकता है लेकिन एल्गोरिदम इतने जुड़े हुए हैं कि काम की इकाई को अलग करना मुश्किल है। प्रतिक्रिया के लिए किसी भी तरह धन्यवाद। –