[英]Unit test Class in MVC
我的專案有以下課程
public class Data
{
public void Getdata(){
var user = HttpContext.User.Identity.Name;
}
}
它顯示空引用異常
它適用於Controller,但不適用於class,因為Class沒有ControllerContext 。 有什么幫助嗎?
您可以稍微重組您的班級以類似的方式對其進行測試。 一種方法是添加一個接受HttpContextBase
的構造函數:
public class Data
{
private HttpContextBase contextBase;
public Data(HttpContextBase context)
{
this.context = context;
}
public Data() : this(new HttpContextWrapper(HttpContext.Current))
{
}
public void GetData()
{
var user = this.context.User.Identity.Name
}
}
然后,您可以在單元測試期間傳遞模擬的HttpContextBase
。
[TestMethod]
public void Test()
{
var fakeHttpContext = new Mock<HttpContextBase>();
var fake = new GenericIdentity("user");
var prin = new GenericPrincipal(fakeIdentity, null);
fakeHttpContext.Setup(t => t.User).Returns(prin);
var data = new Mock<Data>(fakeHttpContext.Object);
// Now you can successfully call data.GetData()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.