C#单元测试:从存储库中检索数据

本文关键字:检索 数据 存储 单元测试 | 更新日期: 2023-09-27 17:58:33

所以我必须为我的数据检索创建一个单元测试,我想要得到的对象相当大。我有带有"GetbyId"的存储库(在那里我们可以检索数据对象和映射)。我发现最好创建两个单元测试:

  1. 检索数据对象
  2. 映射到我的模型

我们已经创建了一些测试示例,我正在使用测试实体的已保存xml检查实体,因此我们非常灵活。我的问题是映射,因为我的模型确实有一些接口,我不能序列化它,我不想硬编码每个示例解决方案(因为它们也很多)

有人知道如何更好地测试映射器吗?

Ps:我知道,我很会把事情解释得很糟糕,很抱歉。

编辑:

这里有一个例子:由于IContact是在Person中,我无法序列化它,所以我不知道如何轻松检查它(这个模型是一个例子,实际大约有200行大,而不计算接口中的子行)

public Person: IPerson 
{
    public Name {get; set;}
    public IContact {get; set;}
}
public Contact: IContact
{
    public Phone {get; set;} 
}

C#单元测试:从存储库中检索数据

通常我使用Compare.net来处理这些情况:

//arrange:
var expected = new Person{ Name = "Alice", Contact = new Contact(){Phone = ""}};
CompareLogic compareLogic = new CompareLogic();
//act:
var result = target.GetbyId(1);
//assert:
Assert.IsTrue(compareLogic.Compare(expected, result).AreEqual);

另一种选择是使用Fluent断言(为了全面披露,我没有使用该工具的经验…)

还有一种选择是创建一个用于断言的辅助方法,然后在每个测试中重用它。