कैसे आप निम्नलिखित faking के बारे में जाना होगा Faking:एक सामान्य विधि FakeItEasy
public interface IBlah
{
Func<T, bool> ApplyFilter<T>(Func<T, bool> predicate) where T:IMessage;
}
क्या मैं चाहते हैं के लिए नकली बस वापस जाने के लिए यह किसी भी बदलाव के बिना तर्क है। हालांकि, मैं यह सत्यापित करना चाहता हूं कि फर्जी को बिल्कुल एक बार बुलाया गया है। एक उपयोग के मामले नीचे दिया गया है
public class Something
{
public Something(IBlah blah) { _blah = blah; }
public bool DoSomething(SomeValue m, Func<SomeValue, bool> predicate)
{
Func<SomeValue, bool> handler = _blah.ApplyFilter(predicate);
return handler(m);
}
}
अर्थात नकली जरूरतों के माध्यम से एक पास के रूप में कार्य करने के लिए लेकिन मैं यह भी इसका इस्तेमाल किया गया है सत्यापित करने में सक्षम होने की जरूरत है।
इस बारे में जाने का सबसे अच्छा तरीका क्या है?
[कृपया काल्पनिक उदाहरण के बारे में चिंता मत करो ... वहाँ कवर के तहत चल रहा है बहुत कुछ है, लेकिन मैं यह ऊपर के उदाहरण के लिए नीचे सरल बना दिया है।]
आप सत्यापित करें कि यह एक बार से अधिक प्रयोग किया जाता है चाहता हूँ, कम से कम एक बार उपयोग किया है, या ठीक एक बार इस्तेमाल किया है? क्या होगा यदि यह उस स्थिति को पूरा नहीं करता है? क्या उस इंटरफ़ेस में 'numInvocations' प्रॉपर्टी होनी चाहिए? आप सत्यापित कर सकते हैं कि इसे आसानी से पर्याप्त * से अधिक * नहीं कहा जाएगा, लेकिन यह जानकर कि उसे कॉल नहीं किया गया है ... आपको फीडबैक प्रदान करने के लिए एक तरीका चाहिए। – Servy
जेनरिक शामिल किए बिना, मैं var fake = A.Fake() के साथ ऐसा ही कर सकता हूं; एकॉलटो (() ==> नकली। कुछ विधि (ए ._)) । पुनर्नवीनीकरण (x => x.GetArgument (0)); .... एकॉलटो (नकली) .स्टहॉव हुआ (दोहराया गया। ठीक है। एक बार); मैं यह नहीं समझ सकता कि Func सामान्य के साथ ऐसा कैसे करें। मैंने इंटरफ़ेस के डमी कार्यान्वयन को बनाने का प्रयास किया है, और यह गुजर सकता है, लेकिन चूंकि यह ठोस है, इसलिए FakeItEasy यह सत्यापित नहीं कर सकता कि इसका उपयोग किया गया था। –
ashic
इसलिए यह सुनिश्चित करने के लिए कि आपको यह सुनिश्चित करने की ज़रूरत है कि एक बार जब आप दो गुणों, 'न्यूमवोकेशन' और इस फ़ंक्शन वाले वर्ग को वापस करने की विधि चाहते हैं। फ़ंक्शन को कहीं और पास करें, फिर यह निर्धारित करें कि 'NumInvokations' एक के बराबर है या नहीं। – Servy