簡體   English   中英

MVC中的單元測試類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM