首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >实体框架核心FromSql模拟测试用例

实体框架核心FromSql模拟测试用例
EN

Stack Overflow用户
提问于 2019-05-10 05:30:32
回答 1查看 2.2K关注 0票数 0

我正在使用EF Core非实体模型和get存储过程调用。请参见下面的示例代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
context.Query<ClassDTO>().FromSql("SpName @Param1, @Param2, @Param3", 
                                  new SqlParameter[] { param1, param2, param3 }).ToList();

代码运行正常。但我需要编写模拟测试用例。

有人能帮我吗?如何模拟Context.Query或如何为这些代码编写测试用例?

我尝试实现了以下方式:

https://nodogmablog.bryanhogan.net/2017/11/unit-testing-entity-framework-core-stored-procedures/

但它将适用于** productContext.Products.MockFromSql(...)

但对我来说,它就像productContext.Query.MockFromSql()。因此,建议我如何编写测试用例。

提前谢谢。

一位湿婆

EN

回答 1

Stack Overflow用户

发布于 2019-07-08 17:59:30

DbQuery<TQuery>设置的实际FromSql模拟与DbSet<TEntity>相同,因此OP链接是相关的(尽管它是一个catch all实现,但如果需要匹配FromSql sql/参数,则需要进行额外的模拟设置;警告:它很快就会变得丑陋)。

您需要使用可查询序列模拟DbQuery<TQuery>,按照OP链接模拟查询提供程序(使用所需的任何特定模拟匹配进行扩展),然后将DbQuery模拟对象分配给DbContext .Query<TQuery>()方法和DbContext DbQuery<TQuery>属性。

在模拟DbQuery方面,这是我用来创建一个的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static Mock<DbQuery<TQuery>> CreateDbQueryMock<TQuery>(this DbQuery<TQuery> dbQuery, IEnumerable<TQuery> sequence) where TQuery : class {
    var dbQueryMock = new Mock<DbQuery<TQuery>>();

    var queryableSequence = sequence.AsQueryable();

    dbQueryMock.As<IAsyncEnumerableAccessor<TQuery>>().Setup(m => m.AsyncEnumerable).Returns(queryableSequence.ToAsyncEnumerable);
    dbQueryMock.As<IQueryable<TQuery>>().Setup(m => m.ElementType).Returns(queryableSequence.ElementType);
    dbQueryMock.As<IQueryable<TQuery>>().Setup(m => m.Expression).Returns(queryableSequence.Expression);
    dbQueryMock.As<IEnumerable>().Setup(m => m.GetEnumerator()).Returns(queryableSequence.GetEnumerator());
    dbQueryMock.As<IEnumerable<TQuery>>().Setup(m => m.GetEnumerator()).Returns(queryableSequence.GetEnumerator()); 
    dbQueryMock.As<IQueryable<TQuery>>().Setup(m => m.Provider).Returns(queryableSequence.Provider);

    return dbQueryMock;
}

然后,如果我需要支持FromSql,我将提供程序更改为查询提供程序模拟(根据为CreateQuery设置的模拟操作):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mock.As<IQueryable<TEntity>>().Setup(m => m.Provider).Returns(queryProviderMock.Object);

如果您想节省一些时间,我最终将上面的代码包装在一个库中:https://github.com/rgvlee/EntityFrameworkCore.Testing

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56071216

复制
相关文章
模拟业务最小测试用例01
环境:RHEL6.4 + Oracle 11.2.0.4 1.创建业务用户表空间 2.创建业务用户 3.赋予用户权限 4.创建业务表 5.创建索引 6.业务查询SQL 7.删除业务用户及数据 8.删除业务表空间 1.创建业务用户表空间 假设使用了OMF管理,不需要明确指定数据目录(判定是否使用了OMF技术,查看db_create_file_dest参数配置:show parameter db_create_file_dest) -- 数据表空间 create tablespace dbs_d_jingyu
Alfred Zhao
2019/05/24
5490
模拟业务最小测试用例02
Oracle数据库对很多开发人员而言,基本就只是一个存储数据的仓库,只不过这个仓库功能非常强大,额外提供了很多好用的功能,需要的时候会用就好,不会纠结于某个细节。而对很多DBA而言,正好相反,喜欢沉溺于某些细节上,对某些小知识点对应的原理理解的非常透彻,但却往往很少会站在开发层面认识Oracle。 本文旨在构造一份相对较全面的测试数据,对开发常用的对象都模拟创建一份测试用例,DBA就可以直接拿去做一些基本测试。
Alfred Zhao
2022/05/06
7990
Twemproxy测试用例以及压测结果
1、前端使用 Twemproxy 做代理,后端的 Redis 数据能基本上根据 key 来进行比较均衡的分布。后端一台 Redis 挂掉后,Twemproxy 能够自动摘除。恢复后,Twemproxy 能够自动识别、恢复并重新加入到 Redis 组中重新使用。
小程故事多
2018/08/22
1.2K0
Twemproxy测试用例以及压测结果
[PHP] laravel框架使用测试用例
使用laravel框架的测试用例很简单 比如说想要测试Aes类 只需要 php artisan make:test AesTest 就会生成在下面目录 项目/tests/Feature/AesTest
唯一Chat
2021/07/20
4690
[PHP] laravel框架使用测试用例
测试用例_测试用例编写
对一个测试工程师来说,测试用例的设计编写是一项必须掌握的能力,但有效的设计和熟练的编写测试用例却是一个十分复杂的技术,测试用例编写者不仅要掌握软件测试技术和流程,而且要对整个软件不管从业务,还是对软件的设计、程序模块的结构、功能规格说明等都要有透彻的理解。
全栈程序员站长
2022/09/20
4.9K0
测试用例_测试用例编写
Mock测试用例_测试用例库
近期在重构一些旧项目,看到之前同事编写的测试用例是使用注入SpringJUnit4ClassRunner 直接注册实现层然后测试需要操作的方法是否可运行。虽然这样说是可以达到测试的想法。但是如果要使用在入口的业务控制层,还要有预期的测试结果,那岂不是要写一大堆逻辑来验证了。。因此使用该方案是很笨重的,测试起来也麻烦。然而bug率还是没降低多少。。
全栈程序员站长
2022/09/19
1.7K0
Mock测试用例_测试用例库
python执行测试用例_平台测试用例
通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。 pytest默认运行用例的顺序是按模块和用例命名的 ASCII 编码顺序执行的,这就意味着每次运行用例的顺序都是一样的。 app 测试里面有个 monkey 测试,随机在页面点点点,不按常理的点点点能找到更多的不稳定性 bug。那么我们在写pytest用例的时候,既然每个用例都是相互独立的, 那就可以打乱用例的顺序随机执行,用到 pytest 的插件 pytest-random-order 可以实现此目的,github 地址https://github.com/jbasko/pytest-random-order
全栈程序员站长
2022/09/19
2K0
python执行测试用例_平台测试用例
测试用例_因果图_测试用例图
​ 界面中有多个控件,控件之间有组合或者限制关系,为了弄清楚不同的输入组合会对应怎样不同的输出结果,可以使用因果图或判定表法。
全栈程序员站长
2022/09/21
1.4K0
测试用例_因果图_测试用例图
软件测试用例包括_白盒测试用例
每个测试用例都有1个或多个测试步骤(List[step]),每个测试步骤对应一个API请求或其他用例的引用。
全栈程序员站长
2022/09/19
9650
软件测试用例包括_白盒测试用例
优测优分享 | 这样做测试用例评审更高效
最近的用例评审让我感受颇深,以下是我对于测试用例评审的一些感受,发出来供大家讨论学习。
优测云服务平台
2020/01/07
1.5K0
优测优分享 | 这样做测试用例评审更高效
如何利用 xUnit 框架对测试用例进行维护?
xUnit 是一系列测试框架的统称,最开始来源于一个叫做 Smalltalk 的 SUnit 框架,现在各种面向对象的语言,如 Java、Python 的鼻祖就是 Smalltalk,后来这些语言都借助了 Sunit 框架的理念,有很多通用的规范和特征,也就统称为 xUnit。
Hogwarts_测试
2022/06/30
5890
测试用例(功能用例)——完整demo(一千多条测试用例)
本文档的预期读者包括:最终用户,项目负责人,评审人员,产品人员,软件设计开发人员,测试人员。
红目香薰
2022/11/30
7.8K1
测试用例(功能用例)——完整demo(一千多条测试用例)
简化测试用例
软件测试已经发展成为IT行业中的一个重要领域。无可否认,从头开始开发新软件需要巨大的付出,但还要付出更大的努力的检验软件质量。逐行分析代码可能很麻烦。这些错误在计算机语言中被称为“BUG”,可能使任何开发人员都“彻夜难眠”。
FunTester
2020/04/03
7540
简化测试用例
登录测试用例
(4)中英文、特殊字符、空格、长度限制 - 一般情况下,登录账户和密码不允许输入中文
wangmcn
2022/10/30
8840
软件测试用例编写方法_软件测试用例包括
HttpRunner v3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例 格式关系如下图所示:
全栈程序员站长
2022/09/19
7540
软件测试用例编写方法_软件测试用例包括
android 测试用例模板下载,app测试用例模板.doc
大家好,又见面了,我是你们的朋友全栈君。 app测试用例模板 APP基本测试用例 个人首页 1.我的页面 2.个人信息页面 3.个性标签页面 4.TA的页面 消息页面 消息页面 发布商品和图片 发布商
全栈程序员站长
2022/09/09
1.1K0
测试用例方法
等价类划分 是把所有可能输入的数据分为若干个区域,然后从每个区域中取少量有代表性的数据进行测试即可。
派大星在吗
2021/12/06
7070
简化测试用例
软件测试已经发展成为IT行业中的一个重要领域。无可否认,从头开始开发新软件需要巨大的付出,但还要付出更大的努力的检验软件质量。逐行分析代码可能很麻烦。这些错误在计算机语言中被称为“BUG”,可能使任何开发人员都“彻夜难眠”。
FunTester
2020/04/03
1.1K0
自动生成测试用例_接口测试用例自动生成工具
写用例之前,我们应该熟悉API的详细信息。建议使用抓包工具Charles或AnyProxy进行抓包。
全栈程序员站长
2022/09/19
1.9K0
自动生成测试用例_接口测试用例自动生成工具
测试用例模板和例子_测试用例怎么写 实例
HttpRunner v3.x支持三种测试用例格式pytest,YAML和JSON。官方强烈建议以pytest格式而不是以前的YAML/JSON格式编写和维护测试用例 格式关系如下图所示:
全栈程序员站长
2022/09/20
9450
测试用例模板和例子_测试用例怎么写 实例

相似问题

实体框架核心FromSqlRaw模拟测试用例

111

实体框架核心FromSQL抛出ArgumentNullException

11

实体框架核心2.0 FromSql和

20

用干净的EF核心查询替换实体框架FromSql()

10

在FromSql实体框架核心方法中使用内连接

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文