gpt4 book ai didi

.net - 在单元测试中使用 Entity Framework 是一种好习惯吗?

转载 作者:行者123 更新时间:2023-12-04 06:59:39 24 4
gpt4 key购买 nike

我在写 NUnit 测试服务。

我决定直接发送 SQL 语句 到数据库而不是使用 Entity Framework 模型,这样我就可以成为 某些 结果,即我正在测试数据库中的内容,而不是 Entity Framework 告诉我的数据库中的内容(例如,它可能报告 缓存 结果等)

唯一的缺点是它正在获取 繁琐使用 SqlCommand、SqlDataReader 等编写此代码并能够使用 英孚型号会很多更简单 .

其他人如何做到这一点?在编写测试时使用 Entity Framework 是一种好习惯,还是应该使用直接调用数据库来确保准确的结果?

最佳答案

我会说在测试服务时这是一种不好的做法,因为它会创建对数据库的依赖关系。

我所做的是将我的模型类汇总到存储库模式中。存储库模式被编码为一个接口(interface),以便我可以更改数据库查询的实现而不影响代码的其他部分。它可以很容易地被模拟并用于测试。这是我构建的界面。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace App.Core.Repositories
{
public interface IRepository<TKey, TModel>
where TKey : IComparable
where TModel : class
{
TModel Only(TKey key);
IQueryable<TModel> Where(Func<TModel, bool> query);

TModel Single(Func<TModel, bool> query);
TModel First(Func<TModel, bool> query);
IQueryable<TModel> All();

void Insert(TModel entity);
void Insert(IEnumerable<TModel> entities);

void Update(TModel entity);
void Update(IEnumerable<TModel> entities);

void Remove(TModel entities);
void Remove(Func<TModel, bool> query);
void Remove(IEnumerable<TModel> entities);
}

public interface IRepository<TModel> : IRepository<int, TModel> where TModel : class { }

public interface IRepository : IRepository<int, object> { }
}

关于.net - 在单元测试中使用 Entity Framework 是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2086680/

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