这个单元测试 EF 有问题

Somthing wrong with this Unit Test EF

m 新的单元测试和 EF 代码优先 我正在尝试使用 EF 测试将数据添加到数据库中的功能。 我不知道我的代码有什么问题,它应该失败但它通过了 这是 m 测试函数

[TestClass]
public class ProspectControllerTest
{
    [TestMethod]
    public void Index()
    {     
     DataContext context = new DataContext();
           Seller c = new Seller
           {
               SellerName = "test20",
               SellerDivision = "test20",
               SellerCity  = "City410",
               Active = true,

           };
        context.sellers.Add(c);

           context.SaveChanges();


           Seller s = (from d in context.sellers
                       where d.SellerId == c.SellerId
                       select d).Single();
           //This shouldent pass because there is no records in the db !
           c.SellerName.Equals(s.SellerName);

       }
    }
}

这里是mclass

  public class Seller
{
    [Key]
    public int SellerId { get; set; }
    public string SellerName { get; set; }
    public string SellerDiv { get; set; }
    public string SellerCity { get; set; }

    public Boolean Active { get; set; }

    public Div Div { get; set; }
    public ICollection<Prospect> prospects { get; set; }
}

另一个问题,此测试是否将任何数据存储到数据库中?我应该能够在数据库中查看记录吗?

更改以下行

//This should fail
c.SellerName.Equals("asdfsadfasdfsadfsadf");

Assert.AreEqual<string>("asdfsadfasdfsadfsadf", c.SellerName);

断言语句验证您的测试输出。

如果您要验证是否将正确的对象插入到数据库中,请使用以下断言语句进行验证。

Assert.IsNotNULL(s);
Assert.AreEqual<string>("asdfsadfasdfsadfsadf",c.SellerName);

您必须在测试方法中使用 Mock 来执行插入数据库等操作(但它不会将用于 运行 代码的查询插入到数据库中,但它不会因为使用 Mock).

而保存数据库

注意:使用 MOCK 概念来实现。

Assert.AreEqual(c.SellerName, "asdfsadfasdfsadfsadf");

并使用断言检查值。