gpt4 book ai didi

c# - 单元测试的数据准备 - C#

转载 作者:太空宇宙 更新时间:2023-11-03 20:51:27 25 4
gpt4 key购买 nike

我正在使用 Entity Framework Core InMemory Provider 编写单元测试/组件测试。

我在写单元测试的时候遇到了下面的问题。

我有以下两种 BL/DL 方法。

  1. 创建
  2. ToGet

所以当我编写单元测试时,我需要为单元测试创​​建一些示例数据。

当我为ToGet方法编写单元测试时,我可以使用ToCreate(BL方法)创建示例数据吗?或者当我为编写单元测试时ToCreate,可以使用ToGet方法查看创建的数据吗?这是一个正确的选择吗?

引用以下内容创建单元测试: https://www.youtube.com/watch?v=ddrR440JtiA

最佳答案

您不应通过使用 ToGetToGet 通过 ToCreate 创建数据来验证 ToCreate 持久化数据.原因是你的 UT 不是孤立的,你不是在验证一种行为。您的 UT 也可以在不应该通过的情况下通过。

你应该做什么:为每个方法创建测试用例,然后为每个测试用例创建一个 UT,如果存在与 DB 上下文的交互,则验证交互是否以正确的方式发生。

例如成功持久化一个对象:

[Fact]
public void ToCreate_Persist_One_Oblect(){
//arrange:
var sut = new Repository(context);

//act
sut.ToCreate(new XYzClass(){
... some properties
});

//assert:
var newlyCreatedXyz = context.XYZ.FirstOfDefualt(/*get the item*/);
Assert.NotNull(newlyCreatedXyz);
/*Then asset the properties*/
}

如果您要使用模拟框架而不是内存数据库,那么您可以模拟 DbContext 并验证交互。

关于c# - 单元测试的数据准备 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54742382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com