मैं अपने नियंत्रकमैं एक ISingleResult कैसे moq कर सकते हैं? क्या मैं? या एक बेहतर तरीका है?
public ActionResult Index()
{
using (NorthwindDataContext db = new NorthwindDatacontext())
{
var results = db.GetRecordSets(arg1, ....).ToList();
// use results as list
}
return View();
}
में इस तरह एक कार्रवाई विधि है और मैं इसे (हाँ, के बाद इसे बनाया गया था, इससे पहले कि नहीं ... लेकिन कोड इससे पहले कि मैं शुरू कर दिया लिखा गया था के लिए परीक्षण करना शुरू करना चाहता था TDD उपयोग करती हैं इसलिए ...)
और मैं पता लगा कि इस तरह के नियंत्रक को यह एक के रूप में एक संपत्ति जोड़ने
public delegate NorthwindDatacontext ContextBuilderDelegate();
public ContextBuilderDelegate ContextBuilder { get; set; }
मैं इस तरह निर्माता कुछ में जोड़ सकते हैं ...
0,123,ContextBuilder =() => new NorthwindDatacontext();
तो मुझे लगता है मैं कोई रास्ता नहीं इस का उपयोग करने के लिए मिला NorthwindDatacontext
var controller = new MyController();
var mockDataContext = new Mock<NorthwindDatacontext>();
controller.ContextBuilder =() => mockDataContext.Object;
लेकिन ... का एक नकली के साथ ContextBuilder संपत्ति की स्थापना ActionMethod परीक्षण कर सकते हैं क्योंकि NorthwindDatacontext के सभी तरीकों returnType रूप ISingleResult का उपयोग करें और मैं नहीं कर सकते उस इंटरफ़ेस के साथ ऑब्जेक्ट बनाने का तरीका ढूंढें। मैं इस
var theResult = new List<GetRecordSetsResult>();
// fill the data structure here with the provided result...
mockDataContext.Setup(c => c. GetRecordSets()).Returns(theResult as
ISingleResult<GetRecordSetsResult>);
की कोशिश की है, लेकिन यह काम नहीं करता है जब ISingleResult में बदल जाती है क्योंकि theResult रिक्त है।
क्या इस तरह से परीक्षण करने के लिए ISingleResult ऑब्जेक्ट बनाने का कोई तरीका है या मैं यहां काम करने का गलत तरीका कर रहा हूं? GetEnumerator()
-
अग्रिम
धन्यवाद, आपका प्रश्न और पहला जवाब वास्तव में मुझे समस्या हल करने में मदद करता है। – Odd