首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >单元测试Marten

单元测试Marten
EN

Stack Overflow用户
提问于 2018-08-12 18:55:13
回答 1查看 1.2K关注 0票数 1

我正在组合一个IdentityServer4的实现,使用PostgreSQL作为数据库,使用Marten作为ORM,使用GraphQL作为API。到目前为止,它在运行时运行得很好。然而,我也在尝试使单元测试就位,并且遇到了一个问题。我有IdentityServer4 4的IClientStore接口的自定义实现,其中FindClientByIdAsync方法的实现如下所示:

代码语言:javascript
运行
AI代码解释
复制
public async Task<Client> FindClientByIdAsync(string clientId)
{
    var client = await _documentSession.Query<dbe.Client>().FirstOrDefaultAsync(c => c.ClientId == clientId);
    return _mapper.Map<Client>(client); // AutoMapper conversion call
}

这在运行时非常有用。但是,为了消除此代码,我尝试执行以下测试:

代码语言:javascript
运行
AI代码解释
复制
[Fact]
public async Task FindClientByIdReturnsClient()
{
    var clients = new []
    {
        new dbe.Client
        {
            ClientId = "123"
        }
    }.AsQueryable();

    var queryable = new MartenQueryable<dbe.Client>(clients.Provider);
    // _documentSession is a Moq Mock
    _documentSession.Setup(x => x.Query<dbe.Client>()).Returns(queryable);

    var store = new ClientStore(_documentSession.Object, _mapper);

    var result = await store.FindClientByIdAsync("123");

    Assert.NotNull(result);
    Assert.Equal("123", result.ClientId);
}

当测试试图执行FindClientByIdAsync方法时,会发生错误:

代码语言:javascript
运行
AI代码解释
复制
System.InvalidCastException : Unable to cast object of type 'System.Linq.EnumerableQuery`1[StaticSphere.Persona.Data.Entities.Client]' to type 'Marten.Linq.IMartenQueryable'.

如果任何人熟悉马滕可以提供一些洞察力,那就太好了!我在谷歌上花了很多时间,但在这个问题上没有发现任何具体的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-13 00:51:20

这里引用了Marten创建者的一句话(上下文):

您可以模拟一些IDocumentSession (Load、Store、SaveChanges,可能是通过编译的查询进行查询),但是如果您试图模拟Linq支持,您将处于一个充满伤害的世界。

因此,一种解决方案是进行集成测试,您可以从官方的Marten储存库这里中找到一些代码。

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

https://stackoverflow.com/questions/51814633

复制
相关文章
【单元测试】--编写单元测试
这是一个简单的NUnit单元测试的示例,展示了如何创建测试项目,编写测试用例,运行测试以及查看测试结果。随着你的项目复杂性的增加,你可以编写更多的测试用例来确保你的代码按预期工作。
喵叔
2023/10/22
4520
前端单元测试总结_javascript单元测试
目前,前端的测试框架很多,像QUnit、jasmine、mocha、jest、intern等框架,这些框架各有特点,简单描述下,感兴趣的可以具体研究:
全栈程序员站长
2022/09/20
1.5K0
【单元测试】--单元测试最佳实践
编写单元测试代码时,遵循一致的风格和最佳实践是非常重要的,因为它有助于提高代码的可读性、可维护性和可靠性。以下是一些常见的单元测试代码风格和最佳实践:
喵叔
2023/10/22
6660
单元测试
在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块的最小单位来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。 – 维基百科
用户2491699
2018/08/02
1.6K0
单元测试
单元测试
  每个开发人员都写过很多代码、函数,但是你能保证你写的每个函数都能执行并且正常吗?   我们太多时间站在功能需求的角度来审视我们的代码,认为需求实现功能逻辑正常,我们就完成了自己的使命。功能逻辑固然重要这个也是我们的目标。但是仅此而已吗,首先作为开发人员要知道,代码的终极目标有两个:实现需求保证逻辑正常、保证代码质量和可维护性。测试人员只能帮助我们查漏需求是否完整实现,对于代码质量和可维护性是需开发自己保证的,所以单元测试必不可少。
OPice
2019/11/11
1.7K0
单元测试
指对软件中最小的可测试单元进行检查和验证,调用被测服务的类或方法,根据类或方法的参数,传入相应的数据,得到一个返回结果,最终断言返回的结果是否符合预期。如果相等,测试通过;如果不相等,测试失败。
MickyInvQ
2021/02/06
8270
单元测试
单元测试
.markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{line-height:1.5;margin-top:35px;margin-bottom:10px;padding-bottom:5px}.markdown-body h1{font-size:30px;margin-bottom:5px}.markdown-body h2{padding-bottom:12px;font-size:24px;border-bottom:1px solid #ececec}.markdown-body h3{font-size:18px;padding-bottom:0}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:15px}.markdown-body h6{margin-top:5px}.markdown-body p{line-height:inherit;margin-top:22px;margin-bottom:22px}.markdown-body img{max-width:100%}.markdown-body hr{border:none;border-top:1px solid #ddd;margin-top:32px;margin-bottom:32px}.markdown-body code{word-break:break-word;border-radius:2px;overflow-x:auto;background-color:#fff5f5;color:#ff502c;font-size:.87em;padding:.065em .4em}.markdown-body code,.markdown-body pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}.markdown-body pre{overflow:auto;position:relative;line-height:1.75}.markdown-body pre>code{font-size:12px;padding:15px 12px;margin:0;word-break:normal;display:block;overflow-x:auto;color:#333;background:#f8f8f8}.markdown-body a{text-decoration:none;color:#0269c8;border-bottom:1px solid #d1e9ff}.markdown-body a:active,.markdown-body a:hover{color:#275b8c}.markdown-body table{display:inline-block!important;font-size:12px;width:auto;max-width:100%;overflow:auto;border:1px solid #f6f6f6}.markdown-body thead{background:#f6f6f6;color:#000;text-align:left}.markdown-body tr:nth-child(2n){background-color:#fcfcfc}.markdown-body td,.markdown-body th{padding:12px 7px;line-height:24px}.markdown-body td{min-width:120px}.markdown-body blockquote{color:#666;padding:1px 23px;margin:22px 0;border-left:4px solid #cbcbcb;background-color:#f8f8f8}.markdown-body blockquote:after{display:block;content:""}.markdown-body blockquote>p{margin:10px 0}.markdown-body ol,.markdown-body ul{padding-left:28px}.markdown-body ol li,.markdown-body
Jimmy_is_jimmy
2020/11/19
5470
【单元测试】--维护和改进单元测试
持续维护单元测试是确保它们继续有效的关键。以下是一些方法来保持单元测试的可维护性:
喵叔
2023/10/23
3460
单元测试
Mike Cohn 在十几年前曾经提出过著名的“测试金字塔”理论,将测试划分为三个层次。从上到下分别是:UI 测试、服务测试和单元测试。它们累加在一起,就像一个金字塔一样。
只喝牛奶的杀手
2023/06/05
4600
单元测试
单元测试
对单元测试的描述大家可自行百度,后期时间满足的情况下,我在对单元测试进行一个单独的专题进行说明,这一节主要就是介绍一下简单的用法。
happlyfox
2019/03/14
1.2K0
单元测试
单元测试
简介 @RequestBody方式 Controller /** * 药品索引--通过doctorTeamHot * @param searchRequest * @return */ @RequestMapping(value = "/searchDrugSpu") public RpcResponse searchDrugSpu(@RequestBody DrugSearchRequest searchRequest) { Integer size = searchRequest.g
HLee
2020/12/31
7340
单元测试
Python单元测试()
在Python的单元测试(一)中,我们讲了单元测试的概念以及一个简单的单元测试例子。
青南
2019/01/09
1.1K0
单元测试 - MockBean
使用@MockBean替换Spring上下文中的Bean(这样会导致Spring上下文重启)
十毛
2021/01/20
1.9K0
单元测试规范
举个例子,现在要对Shape.Core.dll中的Line类的Contains方法写单元测试,测试其在传入一个当前直线上的点时,能正确返回true,按照规范应该这样命名:
喝茶去
2019/12/31
1.8K0
java 单元测试
此测试类用于spring配置的项目,需加载xml文件时用到,测试程序继承此类即可测试,比如:
老梁
2019/09/10
7830
java 单元测试
SpringBoot 单元测试
添加了 spring-boot-starter-test 依赖 BaseControllerTest package com.test; import org.hamcrest.Matcher; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.sp
qubianzhong
2019/06/14
1.1K0
单元测试(Spring)
YGingko
2017/12/28
4.7K0
Junit单元测试
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。
共饮一杯无
2022/11/28
8870
单元测试是什么?为什么要做单元测试?
单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为1。
测试小兵
2019/11/20
2.8K0
聊聊单元测试
单元测试(unit testing):是指对软件中的最小可测试单元进行检查和验证。
阿杜
2018/08/06
1.4K0

相似问题

java.util.MissingFormatArgumentException:格式说明符'%s‘

20

java.util.MissingFormatArgumentException:格式说明符%2$s

22

线程“主”java.util.MissingFormatArgumentException中的异常:格式说明符'%s‘

13

我在java中收到java.util.MissingFormatArgumentException:格式说明符'%s‘错误

2149

线程“主”java.util.MissingFormatArgumentException中的异常:格式说明符'10s‘

44
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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