मैं फ्रेमवर्क का मज़ाक लगाने के लिए नया हूं और मेरे एमवीसी ऐप यूनिट परीक्षण में सहायता के लिए राइनोमोक्स का उपयोग करना शुरू कर दिया है।राइनो मोक्स का उपयोग करने के लिए कैसे करें HttpContext.Aplication
मैं HttpContext का मज़ाक उड़ाते हुए Scott Hanselmanns MVC Mock Helper का उपयोग कर रहा हूं। मैंने सफलतापूर्वक (कुछ समय बाद) कुछ चीज़ों की नकल की है जो मुझे चाहिए लेकिन एचटीपी कॉनटेक्स्ट की एप्लिकेशन प्रॉपर्टी की बात आती है।
अपने आवेदन में मैं आवेदन में एक वस्तु की दुकान और की तरह एक नियंत्रक के भीतर इसे पुनः प्राप्त:
SomeObj foo = (SomeObj)Application["fooKey"];
यह मेरा MVC App में Application_Start पर बनाया जाता है।
पहले उत्तर (स्पष्टता के लिए अतिरिक्त कोड) वर्तमान में परीक्षण सेटअप में निम्नलिखित UPDATED मुझे क्या करना:
HttpContextBase mockHttpBase = mocks.FakeHttpContext();
controllerToTest = new SomeController();
mocks.SetFakeControllerContext(controllerToTest);
HttpApplicationStateBase appState =
MockRepository.GenerateStub<HttpApplicationStateBase>();
Globals tmpAppGlobals =
new Globals();
mockHttpBase.Expect(ctx => ctx.Application).Return(appState);
mockHttpBase.Expect(ctx => ctx.Application[Globals.GlobalsKey]).
Return(tmpAppGlobals);
मेरी इकाई परीक्षण सेटअप में मुझे क्या करना:
Globals tmpAppGlobals = new Globals();
controllerToTest.ControllerContext.HttpContext.
Expect(ctx => ctx.Application[Globals.GlobalsKey]).
Return(tmpAppGlobals);
इस कॉल फेंकता एप्लिकेशन ऑब्जेक्ट के लिए एक NullReference अपवाद।
मेरा प्रश्न है दो गुना:
1) क्या यह सही दृष्टिकोण या मैं कुछ एक डिजाइन/वास्तुकला के नजरिए से गलत किया है है?
2) यह क्यों काम नहीं करता है ?!
धन्यवाद, अग्रिम में।
मैंने अपना जवाब संपादित कर लिया है; इसे जांचें और देखें कि यह – Randolpho