Hỏi về Unit Testing asp.net mvc

Controller:
public class QCReservesController : BaseQCController
{

    [Route("QCReserve")]
    public ActionResult Index()
    {
        scm = new ServerCodeManager(ctrdata);
        Models.QCReserveModels models = new Models.QCReserveModels();

        //get List CCN
        models.colNameList = GetDataCCN();
        //get List Mas_loc_start
        models.masterList = GetDataMasLoc();
        return View(models);

    }

Models: public class QCReserveModels
{
public string ID { get; set; }
public string ColAddCNNName { get; set; }
public string Name { get; set; }

    [Required(ErrorMessage = "印刷枚数が入力されていません")]
    public string TextNumber { get; set; }

    public string Masterlocation { get; set; }
    public List<ComboBoxOption> masterList { get; set; }
    public List<ComboBoxOption> colNameList { get; set; }
}

DBAccess:
public class QCReserveDB : DbConnectionBase
{
public QCReserveDB() : base()
{
}

    public List<ComboBoxOption> GetMasLocList()
    {
        ICMLog.EventLog("Get master location data.", GetType().Name, MethodBase.GetCurrentMethod().Name);
        List<ComboBoxOption> masLocList = new List<ComboBoxOption>();

        var masLocModel = new ComboBoxOption();
        masLocModel.Key = Constants.DEFAULT_MAS_LOC_VAL;
        masLocModel.Value = Constants.DEFAULT_MAS_LOC_VAL;
        masLocList.Add(masLocModel);

        try
        {
            var ds = serverCodeManager.GetCmbListOfMAS_LOC(ctrlData.CCN);
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                masLocModel = new ComboBoxOption();
                masLocModel.Key = dr[MAS_LOCDefine.COL_MAS_LOC].ToString();
                masLocModel.Value = dr[MAS_LOCDefine.COL_ADD_MAS_LOC_MLOC_DESC].ToString();
                masLocList.Add(masLocModel);
            }
        }
        catch (Exception e)
        {
            ICMLog.ErrorLog(e.Message, GetType().Name, MethodBase.GetCurrentMethod().Name);
        }

        return masLocList;
    }


    public List<ComboBoxOption> GetListCCN()
    {
         ICMLog.EventLog("Get CCN data.", GetType().Name, MethodBase.GetCurrentMethod().Name);
        List<ComboBoxOption> ccnList = new List<ComboBoxOption>();

        var CCNModel = new ComboBoxOption();
        CCNModel.Key = Constants.DEFAULT_MAS_LOC_VAL;
        CCNModel.Value = Constants.DEFAULT_MAS_LOC_VAL;
        ccnList.Add(CCNModel);

        try
        {
            var ds = serverCodeManager.GetCmbListOfCCN();
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                CCNModel = new ComboBoxOption();
                CCNModel.Key = dr[CCNDefine.COL_CCN].ToString();
                CCNModel.Value = dr[CCNDefine.COL_ADD_CCN_NAME].ToString();
                ccnList.Add(CCNModel);
            }
        }
        catch (Exception e)
        {
            ICMLog.ErrorLog(e.Message, GetType().Name, MethodBase.GetCurrentMethod().Name);
        }

        return ccnList;
    }
}

trả về tên view Index();

=>mong các bạn chỉ cho mình để viết unit test e cần phải viết bao nhiêu hàm và test những cái gì
và làm sao để e có thể viết hàm test kiểm tra xem controller có trả về view(model) dữ liệu ở view có đúng không?
em có viết thử 1 hàm test nhưng chạy nó báo lỗi mong chỉ giáo cho luôn mình sai ở đâu?
[Test]
public void QCReserveIndex()
{
string expected = “Index”;
var controller = new QCReservesController();
var result = controller.Index() as ViewResult;
Assert.AreEqual(expected,result.ViewName);

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?