डब्ल्यूसीएफ सेवाओं से अपेक्षित दोषों की इकाई परीक्षण करने का सबसे अच्छा तरीका क्या है?यूनिट परीक्षण डब्ल्यूसीएफ दोष
मैं एक डब्ल्यूसीएफ सेवा का परीक्षण करने का प्रयास कर रहा हूं जो एक निश्चित पुनरुत्पादन त्रुटि के लिए FaultExceptions को फेंक रहा है (सही ढंग से)। यूनिट परीक्षणों को डब्ल्यूसीएफ क्लाइंट का एक उदाहरण मिलता है और लागू सेवा विधि को कॉल करता है, जो एक FaultException फेंकता है।
यह सब काम करता है जैसा कि आप उम्मीद करेंगे, लेकिन मुझे यह परीक्षण करने में कठिनाई हो रही है, क्योंकि त्रुटि कार्यान्वयन में त्रुटि नहीं होने पर गलती आईडीई को तोड़ने का कारण बनती है। क्योंकि मैं दोषों का उपयोग कर रहा हूं, और अपवाद नहीं, मैं उम्मीद कर रहा था कि आईडीई अपवाद को क्रमबद्ध करे और इसे क्लाइंट को भेज दें, जहां यह अपवाद उठाएगा।
मुझे लगता है कि विशिष्ट उपयोगकर्ता-अनचाहे अपवादों के लिए तोड़ने को अक्षम करने के लिए एक कॉन्फ़िगरेशन विकल्प है, लेकिन मुझे आशा थी कि कोई भी एक ही परिणाम प्राप्त करने के लिए एक बेहतर तरीका बता सकता है, क्योंकि यह किसी टीम में आसानी से करने योग्य नहीं है वातावरण।
यहाँ कार्यान्वयन वर्तमान की तरह दिखता है की कुछ नमूना कोड ...
इकाई परीक्षण परियोजना मेरी WCF सेवा के लिए एक सेवा संदर्भ में है, और मैं इस तरह के रूप इंटरफेस को परिभाषित किया है:
[OperationContract(Name = "DoSomething")]
[FaultContract(typeof(EpicFail))]
ResponseObject DoSomething(RequestObject requestObject);
गलती इस तरह के रूप में परिभाषित किया जाता है:
[DataContract]
public class EpicFail
{
public EpicFail(string action)
{
this.Reason = "Epic Fail";
this.Action = action;
}
[DataMember]
public string Reason
{
get;
set;
}
[DataMember]
public string Action
{
get;
set;
}
}
कोड है कि सेवा कॉल इस तरह अस्पष्ट लग रहा है:
[TestMethod()]
[ExpectedException(typeof(FaultException<EpicFail>))]
public void FaultTest_Fails_Epicly()
{
bool testPassed = false;
try
{
ResponseObject resp = GetServiceClient().DoSomething(req);
}
catch (FaultException<EpicFail>)
{
testPassed = true;
}
Assert.IsTrue(testPassed);
}
- मैं दिखाने के लिए कि मैं ExpectedException विशेषता का उपयोग कर रहा हूँ और यह जब अपवाद सेवा में फेंक दिया जाता है को तोड़ने से आईडीई/डिबगर रखने पर ज्यादा प्रभाव पड़ रहा हो प्रतीत नहीं होता है कोड का संपादन किया।
आप इकाई परीक्षण के समान प्रक्रिया में WCF सेवा होस्ट कर रहे हैं, या एक अलग प्रक्रिया में? –
अलग प्रक्रियाओं, डब्ल्यूसीएफ सेवा आईआईएस के माध्यम से आयोजित की जाती है। मैं डीबग मोड में स्थानीय रूप से यूनिट टेस्ट चला रहा हूं। दोनों परियोजनाएं एक ही समाधान का हिस्सा हैं। मुझे लगता है कि अगर मैं बिल्ड मोड में सेवा चलाता हूं और डीबग मोड में यूनिट परीक्षण करता हूं तो यह शायद समस्या को ठीक करेगा, लेकिन यह एक बेहतर समाधान की तरह प्रतीत नहीं होता है, तो आईडीई कॉन्फ़िगरेशन विकल्प .. यह अभी भी कुछ है जो मुझे हर किसी के लिए करना है मशीन। – mattv
क्या आपके पास सभी अपवादों को तोड़ने के लिए आईडीई कॉन्फ़िगर किया गया है? – Kristen