首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Moq基础(六)

    这一章是最后一讲,我们讲一下Moq中值得注意的小技巧,以及对Moq使用的评价 ---- MockBehavior:伪对象行为 在使用Moq创建伪对象时,可以在构造函数里传入MockBehavior MockBehavior...Strict: 任何调用都需要显式Setup,并使用VerifyAll验证。 什么意思呢?如下图所示,你要验证公共方法A,A中做了T.B()和T.C()两件事。...public void A() { Name = T.B(); Age = T.C(); } Loose允许你测试A时只伪造方法B,并验证Name状态, Strict要求必须同时伪造方法B...同样,另一方面,如果后期方法A又调用了一个T.D(),那么前者的测试会过,后者会失败,提醒用户修改测试。 至于选择,我个人是没有什么偏好,大家自己喜欢就好。...---- CallBase :调用基类方法 如果你期望某些方法调用原类型虚方法的默认实现,可以使用 var mock = new Mock { CallBase = true }; 这个在测试有一大堆虚方法的基类时十分有效

    87730

    Moq基础(五)

    上一章我们将讲了伪造属性和事件 这一章我们将参数匹配,回调,和验证 ---- It:参数匹配 It 这个类其实我们已经在前面有所涉及。我们使用It.IsAny()匹配任意字符串。...CallBack是指在执行一个Setup的伪造方法时,执行一个回调函数 他的无参数结构是 //无参数 fakeFoo.Setup(fake => fake.DoSomething(It.IsAny验证是Assert环节行为,此时的伪对象作用是Mock 这里也只列出基本功能 Verify(expression),验证表达式是否被执行 Verify(expression,times),验证表达式的执行次数...VerifySet(expression),验证属性Set是否被执行 VerifySet(expression,times),验证属性Set的执行次数 VerifyNoOtherCalls...(),处理已经验证的调用外,fake对象没有其他调用 ​ ---- 本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/Moq%E5%9F%BA%E7%A1%

    79410

    Moq基础(四)

    上一章讲了如何使用Setup伪造方法 这一章我们将伪造属性和事件 ---- Setup:伪造属性 上一章我们说过setup系列不仅可以伪造方法,也可以伪造属性(毕竟属性本质也是方法,┓( ´∀` )┏...此时,有了经验的童鞋们会说,这不是很简单么,伪造属性的Set方法。 大错特错 思考下,我们如果伪造了一个属性的Set方法后,能够干什么呢?只能是验证这个伪对象的属性是否被赋值了。...//使用VerifySet验证 fakeFoo.VerifySet(fake => fake.Name="红领巾"); //使用SetupSet验证 fakeFoo.SetupSet(fake => fake.Name...VerifySet验证 fakeFoo.VerifySet(fake => fake.Name="红领巾"); //使用SetupSet验证 fakeFoo.SetupSet(fake => fake.Name...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

    1.2K20

    Moq基础(三)

    上一章区分了下stub,和mock 这一章我们的确要开始讲moq的api了 ---- Setup系列 Setup系列的函数用于伪造特定方法的返回值。...当然这个方法也会包含属性的方法 Setup:伪造方法 setup伪造方法返回值的格式为伪对象.Setup(fake=>fake.方法名).Returns(返回值) 这里用moq官方文档中的接口为例 public...me slim x1",第二次就会返回"fitness makes me slim x2", 这时我们就需要另外一个函数CallBack,CallBack可以让你在方法调用的时候执行一个回调函数。...fake.DoSomething("")).Throws(new ArgumentException("you must do something to make you slim")); //伪造方法回调...本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

    1.1K20

    C#.NET.NET Core优秀项目和框架2024年10月简报

    MethodTimer 项目简介: MethodTimer是一个.NET开源、免费(MIT License)、轻量级的运行耗时统计库,用于在编译时自动向指定方法注入计时代码,无需手动编写繁琐的计时逻辑。...项目简介: Moq是一个.NET开源、流行、使用简单的 .NET 模拟库,充分利用了.NET 的 Linq 表达式树和 lambda 表达式。...从而简化单元测试中的依赖管理和验证过程,提高代码的可测试性和可维护性。...一键式解决 tcp 黏分包问题,使用协议模板,可快速实现「固定包头」、「固定长度」、「区间字符」等一系列的数据报文解析。...它采用了多种先进技术和框架,旨在提高开发效率,降低开发成本,并提供一个稳定、可扩展的后台管理系统解决方案。

    13810

    【单元测试】--工具与环境

    以下是一些关键特点和概念,来介绍 JUnit: 注解和断言: JUnit 使用注解(如 @Test)来标识测试方法,并使用断言(如 assertEquals)来验证代码的行为是否符合预期。...异步测试: Mocha 本身具有内置支持异步测试的机制,包括回调函数、Promises 和 async/await。这对于测试异步代码非常有帮助。...创建测试类,并使用 [Test] 特性来标记测试方法。编写测试方法,使用断言来验证代码的行为是否符合预期。 4....通常,你可以使用第三方库,如 Moq、NSubstitute 或 Rhino Mocks,来创建模拟和存根对象。以下是使用 Moq 作为示例的步骤: 1....安装 Moq NuGet 包: 在 NUnit 项目中,首先需要安装 Moq NuGet 包。你可以使用 NuGet 包管理器或命令行工具来执行此操作。

    39050

    使用 Moq 测试.NET Core - Why Moq?

    提高测试可靠性, 例如有时这个依赖项的bug太多了, 经常由于依赖项的原因导致测试失败, 那么就应该使用mock版本来验证我们自己写的代码....Dummy, 有时候, 被测试方法需要一些参数, 但是这些参数实际上并没有用到, 这时就可以创建dummy, 它们的存在只是为了满足调用方法的参数要求. Stub, (状态测试)....Moq 官网: https://github.com/moq/moq4 Moq框架可以用来创建dummy, stub 和 mock. 在本文里把这三个东西都叫做mock对象吧....Moq使用一套API来创建stub和mock对象....这两个方法的作用是一样的, 但是调用方法略有不同. 但是此时, 该接口的实现类还没有开发完毕: ? 在转会审批类里面, 需要添加这个依赖, 使用的是接口: ?

    3.1K30

    5 分钟 .NET 单元测试极简入门

    本文的示例代码没有使用最近有争议的 Moq 库,而是使用了 NSubstitute 代替。...如何构建测试项目 单元测试是一种验证代码功能正确性的方法,它可以使用一些特定的框架和工具来编写和运行。...调用 BookService 的方法,并使用 FluentAssertions 来验证返回值或异常是否符合预期。 运行所有的测试,并检查是否通过。 步骤 1 创建项目和添加引用很简单,我这里不再详述。...它测试的是当 author 参数传入 null 或 "" 时,是否抛出了对应的异常,对应的异常信息是否正确。它使用了 [Theory],表示这个方法会接受多轮输入。...然后又使用了两个 [InlineData]。这个测试方法会被运行两次,一次的参数 author 会是 null,另一次的会是 ""。很简单吧。

    42850

    使用 Moq 测试.NET Core 应用 -- 其它

    使用的代码: https://github.com/solenovex/Moq4-Tutorial-Code 里面的 05 Before 部分. 抛出异常 这里是指让mock对象抛出异常....添加一个处理事件的方法, 如果事件被触发, 那么PlayerHealthChecked这个标识就会变成true. 创建一个测试方法, 以判断该event是否被触发: ? 这个测试应该会失败: ?...Mock 不实现接口的方法 首先建立一个类, 它没有实现任何接口, 里面有一个方法用于判断当前是否处于转会期: ? 然后在转会审批类里使用该类: ? 创建一个测试方法, mock上面的类: ?...这是因为Moq在mock这种类的时候要求其方法必须是virtual的. 那么修改该方法为virtual: ? 这样的话测试就会通过: ?...由于这种方法直接返回所需的类型, 所以在使用mock对象的时候就无需使用.Object属性了. 该测试也会通过: ?

    1.9K40
    领券