我需要进行单元测试以检查Create方法是否保存到数据库。我知道这种方法不应该在实际项目中进行单元测试。我这样做只是为了学校项目中的学习和演示目的。我知道我必须使用模拟对象和控制器的一些抽象依赖,因为我在其他一些答案中读到,但因为我刚开始学习c#,这对我没有多大帮助。 你能告诉我一个简单的解决方案或一些建议。 感谢。
这是Create方法:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,Code,Description")] LocationCode locationCode)
{
if (ModelState.IsValid)
{
uow.LocationCodeRepository.Insert(locationCode);
return RedirectToAction("Index");
}
return View(locationCode);
}
这是Model中的LocationCode类:
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace BookInventory.Models
{
public class LocationCode
{
[Key]
public int Id { get; set; }
public string Code { get; set; }
public string Description { get; set; }
public virtual ICollection<Book> Books { get; set; }
}
}
答案 0 :(得分:0)
我所做的是创建一个为每个单元测试创建LocalDB测试数据库的小类。它正在TestInitialize中初始化(在每个单元测试之前运行),它执行以下操作:
运行速度非常快,并且允许您真正测试查询/ ORM,而不是仅仅模拟存储库并假设一切正常(在我看来这是非常错误的,特别是如果您正在编写自己的查询而不是使用LINQ。使用SQL查询重构某些东西可能很容易破坏。)