के साथ संदर्भ पैरामीटर का मान सत्यापित करें मैंने अभी Moq पर स्विच किया है और एक समस्या में भाग लिया है। मैं एक ऐसी विधि का परीक्षण कर रहा हूं जो किसी व्यवसाय ऑब्जेक्ट का एक नया उदाहरण बनाता है, ऑब्जेक्ट के गुणों को उपयोगकर्ता इनपुट मानों से सेट करता है और नई ऑब्जेक्ट को सहेजने के लिए एक विधि (SaveCustomerContact) को कॉल करता है। व्यापार वस्तु को रेफ तर्क के रूप में पारित किया जाता है क्योंकि यह एक रिमोटिंग परत के माध्यम से जाता है। मुझे यह जांचने की ज़रूरत है कि SaveCustomerContact को पारित ऑब्जेक्ट को इसकी सभी गुणों को अपेक्षित के रूप में सेट किया गया है, लेकिन क्योंकि यह नियंत्रक विधि में नए के रूप में तत्काल है, इसलिए ऐसा नहीं लगता है।Moq
[TestMethod()]
public void AddContactTest() {
int customerId = 0;
string name = "a";
var actual = new CustomerContact();
var expected = new CustomerContact() {
CustomerId = customerId,
Name = name
};
model.Setup(m => m.CustomerId).Returns(customerId);
model.SetupProperty(m => model.CustomerContactName, name);
model.SetupProperty(m => m.PhoneNumber, string.Empty);
model.SetupProperty(m => m.FaxNumber, string.Empty);
model.SetupProperty(m => m.Email, string.Empty);
model.SetupProperty(m => m.ReceiveInvoiceFlag, false);
model.SetupProperty(m => m.ReceiveStatementFlag, false);
model.SetupProperty(m => m.ReceiveContractFlag, false);
model.SetupProperty(m => m.EmailFlag, false);
model.SetupProperty(m => m.FaxFlag, false);
model.SetupProperty(m => m.PostalMailFlag, false);
model.SetupProperty(m => m.CustomerLocationId, 0);
remote
.Setup(r => r.SaveCustomerContact(ref actual))
.Callback(() => Assert.AreEqual(actual, expected));
target.AddContact();
}
यह सिर्फ सबसे उस पैरामीटर के ahold पाने के कई प्रयासों की हाल ही में है:
public void AddContact() {
var contact = new CustomerContact() { CustomerId = m_model.CustomerId };
contact.Name = m_model.CustomerContactName;
contact.PhoneNumber = m_model.PhoneNumber;
contact.FaxNumber = m_model.FaxNumber;
contact.Email = m_model.Email;
contact.ReceiveInvoiceFlag = m_model.ReceiveInvoiceFlag;
contact.ReceiveStatementFlag = m_model.ReceiveStatementFlag;
contact.ReceiveContractFlag = m_model.ReceiveContractFlag;
contact.EmailFlag = m_model.EmailFlag;
contact.FaxFlag = m_model.FaxFlag;
contact.PostalMailFlag = m_model.PostalMailFlag;
contact.CustomerLocationId = m_model.CustomerLocationId;
RemotingHandler.SaveCustomerContact(ref contact);
}
यहाँ परीक्षण है। संदर्भ के लिए, वास्तविक का मूल्य प्रारंभिक (निर्मित) राज्य से नहीं बदला जाता है।
दावा को स्थानांतरित करना। लक्ष्य कॉल विफल होने के बाद AREEqual (अपेक्षित, वास्तविक) विफल रहता है। यदि मैं जोड़ता हूं। वर्कबैक() को .allBack के बजाय सेटअप में जोड़ें और फिर रिमोट कॉल करें। लक्ष्य के बाद सत्यापित करें (या, मुझे लगता है कि, सख्त करने के लिए नकली सेट करें) यह हमेशा विफल रहता है क्योंकि परीक्षण में प्रदान किया गया पैरामीटर नहीं है एक ही उदाहरण के रूप में नियंत्रक विधि में बनाया गया है।
मैं Moq 3.0.308.2 का उपयोग कर रहा हूं। इसका परीक्षण करने के तरीके पर किसी भी विचार की सराहना की जाएगी। धन्यवाद!
मुझे लगता है कि मुझे यकीन नहीं है कि आप इसे कैसे दबाएंगे (हालांकि मुझे स्टब्स के बारे में ज्यादा जानकारी नहीं है)। क्या आप विस्तारित कर सकते हैं कि इसे कैसे संभाला जा सकता है? –
इसके अलावा, जितना मैं आपके साथ रेफरी मुद्दे पर सहमत हूं, वैसे ही हमारी रिमोटिंग परत काम करती है और मैं बैकएंड के यादृच्छिक बिट्स को लपेटने का एक उदाहरण शुरू करने से नफरत करता हूं ताकि मैं परीक्षण आसानी से लिख सकूं। –
मुझे एक समान समस्या थी, और एमओक्यू काम करने में इतनी शून्य हो गई, मैं भूल गया कि मैं अपना खुद का स्टब लिख सकता हूं! धन्यवाद। –