亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

模擬Asp.net-mvc控制器上下文

模擬Asp.net-mvc控制器上下文

尚方寶劍之說 2019-12-20 10:54:15
因此,控制器上下文取決于一些asp.net內部。有什么方法可以完全模擬這些以進行單元測試?當我僅需要例如Request.HttpMethod返回“ GET”時,似乎很容易用大量設置阻塞測試。我已經在網上看到了一些例子/幫助者,但其中有些是過時的。認為這將是保持最新和最佳狀態的好地方。我正在使用最新版本的犀牛模擬
查看完整描述

3 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

使用最小起訂量看起來像這樣:


var request = new Mock<HttpRequestBase>();

request.Expect(r => r.HttpMethod).Returns("GET");

var mockHttpContext = new Mock<HttpContextBase>();

mockHttpContext.Expect(c => c.Request).Returns(request.Object);

var controllerContext = new ControllerContext(mockHttpContext.Object

, new RouteData(), new Mock<ControllerBase>().Object);

我認為Rhino Mocks的語法相似。


查看完整回答
反對 回復 2019-12-20
?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

這是Jason鏈接的摘錄。與Phil的方法相同,但使用犀牛。


注意:在嘲笑了mockRequest的內部之前,將嘲笑mockHttpContext.Request 返回mockRequest 。我相信此命令是必需的。


// create a fake web context

var mockHttpContext = MockRepository.GenerateMock<HttpContextBase>();

var mockRequest = MockRepository.GenerateMock<HttpRequestBase>();

mockHttpContext.Stub(x => x.Request).Return(mockRequest);


// tell the mock to return "GET" when HttpMethod is called

mockRequest.Stub(x => x.HttpMethod).Return("GET");            


var controller = new AccountController();


// assign the fake context

var context = new ControllerContext(mockHttpContext, 

                  new RouteData(), 

                  controller);

controller.ControllerContext = context;


// act

...


查看完整回答
反對 回復 2019-12-20
  • 3 回答
  • 0 關注
  • 662 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號