实体框架模拟
Telerik®JustMock允许您与Microsoft实体框架一起执行单元测试。
简介
与微软实体框架,通过使用概念应用程序模型而不是关系存储模式来开发数据访问应用程序。
JustMock支持Microsoft实体框架,这要归功于Telerik.JustMock.EntityFramework包中。这个包允许你轻松地在内存中创建DbSet和DbContext类型的模拟。它还为JustMock提供了额外的模拟便利。
在本主题中,我们将介绍单元测试Microsoft Entity Framework中的一些场景。在下面的例子中,我们使用DbContext
使用以下方法初始化:
公共类nerdmeals: DbContext {public DbSet meals {get;设置;} public DbSet RSVPs {get;设置;}}公共类Dinner {public int DinnerID {get;设置;}公共字符串标题{获取;设置;} public DateTime EventDate {get;设置; } public string Address { get; set; } public string HostedBy { get; set; } } public class RSVP { public int RSVPID { get; set; } public int DinnerID { get; set; } public string AtendeeEmail { get; set; } }
归还假收藏
下面的步骤演示了如何返回一个假集合:
的伪集合创建一个方法
晚餐
s.对于这个例子,我们使用下面的代码:public IList
FakeDinners() {List fakeDin = new List {new Dinner {Address = "1 Microsoft way", DinnerID = 1, EventDate =DateTime。现在,HostedBy = "Telerik", Title = "Telerik Dinner"}};返回fakeDin;} 类的新实例
NerdDinners
类。安排那一个叫
nerdDinners.Dinners ()
方法将返回我们的伪集合。调用
nerdDinners.Dinners ()
然后搜索晚餐
有一定的DinnerID
在行为.断言我们的收藏中只有一件而这件有
DinnerID
等于1。
重要的
注意,当你使用
ReturnsCollection ()
你一定在用Telerik.JustMock.Helpers;
.
[TestMethod]公共无效ShouldReturnFakeCollectionWhenExpected() {nerdnerd= new nerd();//安排Mock.Arrange(() => nerddinners . meals).ReturnsCollection(fakdinners ());// Act var query = from nerdmeals中的d。d. dinnerid == 1 select d;// Assert。AreEqual (query.Count ());断言。AreEqual (query.First () .DinnerID);}
用未来的嘲笑返回一个虚假的收藏
在本例中,我们将返回相同的假集合。
public IList FakeDinners() {List fakeDin = new List {new Dinner {Address = "1 Microsoft way", DinnerID = 1, EventDate =DateTime。现在,HostedBy = "Telerik", Title = "Telerik Dinner"}};返回fakeDin;}
公共类DinnerRepository {public Dinner GetById(int dinnerId) {nerdmeals nerdmeals = new nerdmeals ();var查询= from d在nerdmeals。晚餐s where d.DinnerID == 1 select d; return query.First(); } }
新的DinnerRepository ()
但我们仍然达到了预期,测试通过了。这种行为是已知和预期的未来的嘲笑.注意,当你使用
ReturnsCollection ()
你一定在用Telerik.JustMock.Helpers;
名称空间。
[TestMethod] public void ShouldReturnFakeCollectionForFutureInstance() {nerdmeals nerdmeals = new nerdmeals ();Mock.Arrange(() => nerddinners . meals).IgnoreInstance().ReturnsCollection(fakdinners ());断言。AreEqual(1, new DinnerRepository().GetById(1).DinnerID);}
伪造实体的添加
在下一个例子中,我们会讲到安排上帝的召唤Add ()
方法将项实际添加到先前创建的本地集合中。
[TestMethod] public void ShouldReturnFakeCollectionForFutureInstance() {nerdmeals nerdmeals = new nerdmeals ();Mock.Arrange(() => nerddinners . meals).IgnoreInstance().ReturnsCollection(fakdinners ());断言。AreEqual(1, new DinnerRepository().GetById(1).DinnerID);}
- 类的实例
NerdDinners
类。 - 创建一个新的
晚餐
带着身份证和证件列表
的晚餐
实例。 - 安排
nerdDinners.Dinners.Add ()
方法来添加对象步骤2。到本地集合。 - 安排
SaveChanges ()
方法就是什么都不做。 - 通过打电话来行动
添加(晚餐)
而且SaveChanges ()
. - 验证:
- 这个系列一个项
- 这个项目正是来自的对象步骤2。