मैं के साथ, अन्य लोगों के अलावा, निम्न विधि कार्य कार्यान्वयन का एक यूनिट है:लैम्ब्डा अभिव्यक्ति के साथ विधि कॉल सत्यापित करें - Moq
T Single<T>(Expression<Func<T, bool>> expression) where T : class, new();
और मैं इसे कहते हैं, उदाहरण के लिए, इस तरह:
var person = _uow.Single<Person>(p => p.FirstName == "Sergi");
मैं कैसे सत्यापित कर सकता हूं कि Single
विधि FirstName == "Sergi"
के तर्क के साथ बुलाया गया है?
मैं निम्नलिखित की कोशिश की है, लेकिन कोई लाभ नहीं हुआ:
// direct approach
session.Verify(x => x.Single<Person>(p => p.FirstName == "Sergi"));
// comparing expressions
Expression<Func<Person, bool>> expression = p => p.FirstName == "Sergi");
session.Verify(x => x
.Single(It.Is<Expression<Func<Person, bool>>>(e => e == expression));
वे folowing त्रुटि में सभी परिणाम:
Expected invocation on the mock at least once, but was never performed
पर कैसे कोई भी विचार किया जा सकता है? मैं NuGet से नवीनतम Moq उपयोग कर रहा हूँ, संस्करण 4.0.10827.0
अद्यतन: एक विशिष्ट उदाहरण
क्या मैं दिखाई दे रही है है कि जब भी मैं लैम्ब्डा, Verify
काम करता है अंदर स्ट्रिंग शाब्दिक का उपयोग करें। जैसे ही मैं चर की तुलना कर रहा हूं, यह विफल हो जाता है। बिंदु में मामला:
// the verify
someService.GetFromType(QuestionnaireType.Objective)
session.Verify(x => x.Single<Questionnaire>(q =>
q.Type == QuestionnaireType.Objective));
// QuestionnaireType.Objective is just a constant:
const string Objective = "objective";
// the method where it's called (FAILS):
public Questionnaire GetFromType(string type)
{
// this will fail the Verify
var questionnaire = _session
.Single<Questionnaire>(q => q.Type == type);
}
// the method where it's called (PASSES):
public Questionnaire GetFromType(string type)
{
// this will pass the Verify
var questionnaire = _session
.Single<Questionnaire>(q => q.Type == QuestionnaireType.Objective);
}
कैसे आ Verify
जैसे ही मैंने लैम्ब्डा अभिव्यक्ति में विधि पैरामीटर का उपयोग विफल रहता है?
इस परीक्षा को लिखने का सही तरीका क्या होगा?
आपके उत्तर के लिए बहुत बहुत धन्यवाद। मैंने एक बेहतर शब्द की कमी के लिए नए एर ... निष्कर्षों के आधार पर अपना प्रश्न अपडेट कर लिया है। कोई विचार? –
मैंने अपना प्रश्न यह अपडेट करने के लिए अपडेट किया है कि आपकी समस्या क्या हो सकती है। यह वास्तव में 'QuestionnaireType.Objective' के प्रकार पर निर्भर करता है। मैं उम्मीद करता हूं कि यदि आप दो अभिव्यक्तियों को 'ToString()' देखेंगे तो आप देखेंगे कि वे विभिन्न प्रकार के हैं। –
फिर से धन्यवाद, मुझे लगता है कि यह समझ में आता है। लेकिन फिर इस परीक्षा को लिखने का सही तरीका क्या होगा? मुझे लगता है कि इस मामले में वाहन को स्पष्ट कोड के लिए मजाक करना और बाधा है ... –