यहाँ बहुत अच्छे जवाब हैं! जब तक आपको अपनी निर्भरता के लिए पारित किए गए कई वर्ग मापदंडों के बारे में दावा करने की आवश्यकता न हो, तब तक बॉक्स से बाहर जाएं। यदि आप उस स्थिति में समाप्त हो जाते हैं, हालांकि, Moq ने इसके साथ फीचर सत्यापित किया है। मिलान करने वाले परीक्षण की विफलता को अलग करने का अच्छा काम नहीं करते हैं, और तर्कों को कैप्चर करने का रिटर्न / कॉलबैक तरीका आपके परीक्षण में कोड की अनावश्यक लाइनें जोड़ता है ( लंबे समय तक परीक्षण मेरे लिए एक नहीं हैं)।
यहाँ एक gist है: https://gist.github.com/Jacob-McKay/8b8d41ebb9565f5fca23654fd944ac6b एक Moq (4.12) एक्सटेंशन के साथ जो मैं मॉक को पारित किए गए तर्कों के बारे में दावा करने के लिए एक अधिक घोषणात्मक तरीका देता हूं, बिना कमियां के। यहाँ वैरिफाई सेक्शन अभी जैसा दिखता है:
mockDependency
.CheckMethodWasCalledOnce(nameof(IExampleDependency.PersistThings))
.WithArg<InThing2>(inThing2 =>
{
Assert.Equal("Input Data with Important additional data", inThing2.Prop1);
Assert.Equal("I need a trim", inThing2.Prop2);
})
.AndArg<InThing3>(inThing3 =>
{
Assert.Equal("Important Default Value", inThing3.Prop1);
Assert.Equal("I NEED TO BE UPPER CASED", inThing3.Prop2);
});
मैं ठप्प हो जाऊंगा यदि Moq ने एक ऐसी सुविधा प्रदान की, जो घोषणा के रूप में एक ही चीज को पूरा करती है और विफलता अलगाव को प्रदान करती है। उंगलियों को पार कर!