এএসপি. নেট এমভিসি ফ্রেমওয়ার্কটি ব্যবহার করে আমার সি # তে একটি নিয়ামক রয়েছে
public class HomeController:Controller{
public ActionResult Index()
{
if (Request.IsAjaxRequest())
{
//do some ajaxy stuff
}
return View("Index");
}
}
আমি উপহাসের বিষয়ে কিছু টিপস পেয়েছি এবং নিম্নলিখিত এবং রিনোমকস সহ কোডটি পরীক্ষা করার আশা করছি
var mocks = new MockRepository();
var mockedhttpContext = mocks.DynamicMock<HttpContextBase>();
var mockedHttpRequest = mocks.DynamicMock<HttpRequestBase>();
SetupResult.For(mockedhttpContext.Request).Return(mockedHttpRequest);
var controller = new HomeController();
controller.ControllerContext = new ControllerContext(mockedhttpContext, new RouteData(), controller);
var result = controller.Index() as ViewResult;
Assert.AreEqual("About", result.ViewName);
তবে আমি এই ত্রুটিটি পেতে থাকি:
ব্যতিক্রম সিস্টেম.আরগমেন্ট নাল এক্সেপশন: সিস্টেম.আরগমেন্ট নাল এক্সসেপশন: মান শূন্য হতে পারে না। প্যারামিটারের নাম: সিস্টেমে অনুরোধ
যেহেতু Request
নিয়ামকের উপর বস্তুর কোনও সেটটার নেই set আমি নীচের উত্তর থেকে প্রস্তাবিত কোড ব্যবহার করে এই পরীক্ষাটি সঠিকভাবে কাজ করার চেষ্টা করেছি।
এটি রাইনোমকসের পরিবর্তে মোখ ব্যবহার করেছে এবং মক ব্যবহারের ক্ষেত্রে আমি একই পরীক্ষার জন্য নিম্নলিখিতটি ব্যবহার করি:
var request = new Mock<HttpRequestBase>();
// Not working - IsAjaxRequest() is static extension method and cannot be mocked
// request.Setup(x => x.IsAjaxRequest()).Returns(true /* or false */);
// use this
request.SetupGet(x => x.Headers["X-Requested-With"]).Returns("XMLHttpRequest");
var context = new Mock<HttpContextBase>();
context.SetupGet(x => x.Request).Returns(request.Object);
var controller = new HomeController(Repository, LoginInfoProvider);
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
var result = controller.Index() as ViewResult;
Assert.AreEqual("About", result.ViewName);
তবে নিম্নলিখিত ত্রুটিটি পান:
ব্যতিক্রম সিস্টেম.আর্গগমেন্টএক্সেপশন: সিস্টেম.আর্গগমেন্ট এক্সেপশন: অ-ওভারডেবল সদস্যের উপর অবৈধ সেটআপ: x => x.ইএইচডারস ["এক্স-রিকুয়েস্টড-উইথ"] মক.মক.ট্রোআইফ্যাক্যান্ট ওভারাইডে (এক্সপ্রেশন সেটআপ, মেথোডিনফো মেথডইনফো)
আবার, মনে হচ্ছে অনুরোধ শিরোনামটি সেট করতে পারছি না। রাইনোমকস বা মোকে আমি কীভাবে এই মানটি সেট করব?