मैं Moq और सीखने के लिए नया हूँ के हिस्से के रूप वापसी मान निर्दिष्ट करना।MOQ: उम्मीदों
मैं परीक्षण करने के लिए है कि एक विधि की उम्मीद मान देता है की जरूरत है। मैंने अपनी समस्या को समझाने के लिए एक साथ एक मामूली उदाहरण रखा है। इस के साथ बुरी तरह विफल रहता है:
"ArgumentException: अभिव्यक्ति के लिए एक विधि मंगलाचरण नहीं है: सी => (c.DoSomething (" जो "," ब्लॉग ", 1) =" ठीक है ")"
आप मैं गलत क्या कर रहा हूँ को सही कर सकते हैं?
[TestFixtureAttribute, CategoryAttribute("Customer")]
public class Can_test_a_customer
{
[TestAttribute]
public void Can_do_something()
{
var customerMock = new Mock<ICustomer>();
customerMock.Setup(c => c.DoSomething("Jo", "Blog", 1)).Returns("OK");
customerMock.Verify(c => c.DoSomething("Jo", "Blog", 1)=="OK");
}
}
public interface ICustomer
{
string DoSomething(string name, string surname, int age);
}
public class Customer : ICustomer
{
public string DoSomething(string name, string surname, int age)
{
return "OK";
}
}
संक्षेप में: अगर मैं उपरोक्त के समान एक विधि का परीक्षण करना चाहता था, और मुझे पता है कि मैं वापस की उम्मीद कर रहा हूँ एक "ठीक है", मैं कैसे लिखते थे यह Moq का उपयोग कर?
किसी भी सुझाव के लिए धन्यवाद।
बिल्कुल। उनके परीक्षण में कोई परीक्षण विषय नहीं है, जिसने भ्रम पैदा किया है। आप एक परीक्षण विषय का परीक्षण करते हैं, न कि नकली। –
मैं भी सीख रहा हूं, मुझे लगता है कि मेरे सिर के चारों ओर लपेटा गया है, क्या आप कृपया पुष्टि करेंगे। इस उदाहरण में 'DoSomething'' jabberwocky 'वापस कर सकता है, लेकिन क्योंकि आपकी' // व्यवस्था .etup' को 'Return ("OK") 'कहा जाता है, यह दावा है। मैं समझता हूं कि परीक्षण यह सुनिश्चित करना है कि 'टेस्टसब्जेक्ट' अपेक्षित प्रदर्शन करता है, और यहां 'ग्राहक' पर कोई परीक्षण नहीं है। यदि ऐसा है, तो 'TestSubject' सफलतापूर्वक पूरा होने के सत्यापन के लिए 'ग्राहक' से वापसी मूल्य क्यों न करें 'न केवल'। (" सफलता ") या कुछ अन्य सामान्य स्ट्रिंग का दावा क्यों करें? – JabberwockyDecompiler
@JabberwockyDecompiler - यह सिर्फ एक नमूना परीक्षण था जहां आउटपुट एक सहयोगी (मॉक) पर निर्भर करता है .. उदाहरण के लिए ग्राहक "सैम" वापस कर सकता है और परीक्षण के तहत विधि/वर्ग "हैलो सैम!" लौटा सकता है। इसका परीक्षण करने के लिए: आपको परीक्षण में "सैम" वापस करने के लिए नकली सेट करने की आवश्यकता होगी। – Gishu