Telerik JustMock?下载30天免费试用

实体框架模拟

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; } }

归还假收藏

下面的步骤演示了如何返回一个假集合:

  1. 的伪集合创建一个方法晚餐s.对于这个例子,我们使用下面的代码:

    public IList FakeDinners() {List fakeDin = new List {new Dinner {Address = "1 Microsoft way", DinnerID = 1, EventDate =DateTime。现在,HostedBy = "Telerik", Title = "Telerik Dinner"}};返回fakeDin;}
  2. 类的新实例NerdDinners类。

  3. 安排那一个叫nerdDinners.Dinners ()方法将返回我们的伪集合。

  4. 调用nerdDinners.Dinners ()然后搜索晚餐有一定的DinnerID行为

  5. 断言我们的收藏中只有一件而这件有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);}
以下是步骤:
  1. 类的实例NerdDinners类。
  2. 创建一个新的晚餐带着身份证和证件列表晚餐实例。
  3. 安排nerdDinners.Dinners.Add ()方法来添加对象步骤2。到本地集合。
  4. 安排SaveChanges ()方法就是什么都不做。
  5. 通过打电话来行动添加(晚餐)而且SaveChanges ()
  6. 验证:
    • 这个系列一个
    • 这个项目正是来自的对象步骤2。
在本文中
Baidu
map