在MVC 5上使用EF进行单元测试

尼索

新成员
已加入
2020年11月30日
留言内容
1
编程经验
1-3
您好,
我在将我的数据库连接到单元测试时遇到问题。我在youtube上看到了一个视频,该视频推荐了最小起订量并添加了存储库,但我不认为我能做到那么远。
我只想编写一些简单的测试,看看是否已按预期将它们添加到数据库中。
即时通讯添加我的控制器和测试单元的代码。我知道代码还没有完全实现,但是我只是想看看我是否可以通过测试项目到达数据库(我只是想达到)

C#:
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Xml;
using VolunteesMVC6.Models;


namespace VolunteesMVC6.Controllers
{
    public class  家 Controller : Controller
    {
        string xml = @"C:\Users\nisan\Desktop\Niso\תכנות\VolunteesMVC6\VolunteesMVC6\obj\Debug\cities.xml";
        
        public ActionResult Index()
        {
            ds.ReadXml(xml);
            return View();
        }

        public ActionResult SignUp()
        {
            //a veriable class that EF created from SQL   
            tb_Users users = new tb_Users();
            
           if (ds.Tables.Count==0)
            {
                ds.ReadXml(xml);
            }

            string[] names=GetAllCities();
 
            Array.Sort(names);
            ViewBag.CitiesList = new SelectList(names);
            
            return View(users);
        }
        DataSet ds = new DataSet();
        public string[] GetAllCities()
        {

            return (from row in ds.Tables[0].AsEnumerable()
                    select row.Field<string>("strCity")).ToArray();

        }

    }
}

带有错误的单元测试项目:
 5123.png


我不明白问题是什么,不愿意就如何使其工作进行解释。
请帮忙!!
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
如果要测试是否成功写入数据库,那么您正在执行集成测试,而不是单元测试。使用单元测试,您将传入一个看起来像数据库接口的模拟对象,并且您的单元测试将通过断言调用了模拟对象方法来验证是否正在调用将数据写入数据库的适当调用。

无论如何,关于您的问题,屏幕快照右侧的异常信息都在告诉您确切的问题是什么。单元测试引擎正在调用您的控制器,但是控制器无法创建视图,因为视图引擎找不到它需要的其他一些程序集。您需要以某种方式告诉视图引擎使这些其他程序集可用于要测试的代码。
 
已加入
2020年2月15日
留言内容
16
编程经验
1-3
您尝试执行的测试不适合需要集成测试的数据库测试,
您可以使用称为moq的东西。
但是,在单元测试期间出现的问题您将需要以某种方式告诉视图引擎使这些其他程序集可用于要测试的代码。
 
Last edited:
最佳 底部