当前位置: 首页 > 编程笔记 >

unit-testing 使用模拟框架验证行为

姜乐家
2023-03-14
本文向大家介绍unit-testing 使用模拟框架验证行为,包括了unit-testing 使用模拟框架验证行为的使用技巧和注意事项,需要的朋友参考一下

示例

当有必要验证被测系统和测试双打之间的交互时,将使用模拟。需要注意避免创建过于脆弱的测试,但是当测试方法只是编排其他调用时,模拟可能特别有用。

该测试验证了当被测方法被调用(ProcessRecord)时,where方法UseValue被调用了服务方法()。为此,它使用罐装数据设置存根:RecordFlag==true

var stub = new Mock<IRecordProvider>();
stub.Setup(provider => provider.GetRecords()).Returns(new List<Record> {
    new Record { Id = 1, Flag=false, Value="First" },
    new Record { Id = 2, Flag=true, Value="Second" },
    new Record { Id = 3, Flag=false, Value="Third" }
});

然后,它设置一个实现IService接口的模拟:

var mockService = new Mock<IService>();
mockService.Setup(service => service.UseValue(It.IsAny<string>())).Returns(true);

然后将它们提供给被测系统,并调用要测试的方法。

var sut = new SystemUnderTest(mockService.Object);

var processed = sut.ProcessRecord(stub.Object);

然后可以询问该模拟,以验证是否已对它进行了预期的调用。在这种情况下,UseValue使用一个参数“ Second”调用to ,这是来自记录where中的值Flag==true。

mockService.Verify(service => service.UseValue("Second"));
           

 类似资料:
  • 本文向大家介绍unit-testing 将模拟框架用作存根,包括了unit-testing 将模拟框架用作存根的使用技巧和注意事项,需要的朋友参考一下 示例 术语“模拟”和“存根”经常会变得混乱。造成这种情况的部分原因是,许多模拟框架还提供了对创建存根的支持,而没有与模拟相关的验证步骤。 可以像使用“使用存根提供罐头响应”示例中那样编写新类来实现存根,而可以使用模拟框架代替。 使用起订量: 这实现

  • You can use promtool to test your rules. # For a single test file. ./promtool test rules test.yml # If you have multiple test files, say test1.yml,test2.yml,test2.yml ./promtool test rules test1.yml

  • 问题内容: 我曾经遇到过Java的验证框架,您在其中编写了一种方法来保护数据类型的完整性以及对该数据类型的任何CRUD操作的自动调用此方法。 有谁知道这个框架是什么?我只是想避免对附加到数据类型的每个CRUD方法进行重复验证。 问题答案: 这是Java验证库/框架的巨大列表-http: //java-source.net/open- source/validation

  • 主要内容:创建主页面:,创建视图:,创建动作:,配置文件:,此验证是如何工作的?,基于XML的验证:现在,我们将看看如何的Struts验证框架。在Struts的核心有验证框架,协助应用程序的运行规则来执行验证执行之前的操作方法。 通常是使用Javascript来实现客户端验证。但不应单独依赖于客户端验证。最佳实践表明,验证应引入各级应用程序框架。现在,让我们来看看两种方式添加验证我们的Struts项目。 在这里,我们将采取一个例子,Employee 将被捕获的姓名和年龄使用一个简单的页面,我们将

  • How can you ensure that your app continues to work as you add more features or change existing functionality? By writing tests. Unit tests are handy for verifying the behavior of a single function, me

  • testing 包除了测试,还提供了运行并验证示例的功能。示例,一方面是文档的效果,是关于某个功能的使用例子;另一方面,可以被当做测试运行。 一个示例的例子如下: func ExampleHello() { fmt.Println("Hello") // Output: Hello } 如果 Output: Hello 改为:Output: hello,运行测试会失败,提示: got: He