[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);
}
}
}
这是班级
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; }
}
另一个问题,这个测试是否将任何数据存储到db中?我应该能够在数据库中查找记录吗?
答案 0 :(得分:1)
更改以下行
//This should fail
c.SellerName.Equals("asdfsadfasdfsadfsadf");
使用
Assert.AreEqual<string>("asdfsadfasdfsadfsadf", c.SellerName);
断言语句验证您的测试输出。
如果您要验证是否在DB中插入了正确的对象,请使用以下断言语句进行验证。
Assert.IsNotNULL(s);
Assert.AreEqual<string>("asdfsadfasdfsadfsadf",c.SellerName);
答案 1 :(得分:0)
您必须在测试方法中使用Mock来执行插入数据库之类的操作(但它不会在用于运行代码的数据库中插入查询但是它不会保存数据库,因为使用模拟)。
注意:使用MOCK概念来实现此目的。
Assert.AreEqual(c.SellerName, "asdfsadfasdfsadfsadf");
使用断言检查值。