什么是嘲讽? .
当前回答
Mock是以可控的方式模拟真实方法/对象的行为的方法/对象。模拟对象用于单元测试。
测试下的方法通常会调用它内部的其他外部服务或方法。这些被称为依赖关系。一旦模拟,依赖项就会按照我们定义的方式运行。
由于依赖项由mock控制,我们可以很容易地测试我们编写的方法的行为。这就是单元测试。
模拟对象的目的是什么?
mock vs stub
单元测试vs功能测试
其他回答
序言:如果你在字典里查名词mock,你会发现这个词的其中一个定义是被模仿的东西。
mock主要用于单元测试。被测试的对象可能依赖于其他(复杂的)对象。为了隔离您想要测试的对象的行为,您可以用模拟真实对象行为的mock替换其他对象。如果将实际对象合并到单元测试中是不切实际的,那么这是很有用的。
简而言之,模拟是创建模拟真实对象行为的对象。
有时您可能想要区分嘲弄和存根。关于这个主题可能有一些分歧,但我对存根的定义是“最小”模拟对象。存根实现了足够的行为以允许被测试对象执行测试。
mock类似于存根,但测试也将验证被测试对象是否按预期调用mock。测试的一部分是验证mock是否被正确使用。
举个例子:您可以通过实现一个简单的内存结构来存储记录来存根数据库。然后,被测试对象可以将记录读写到数据库存根,以允许它执行测试。这可以测试对象的一些与数据库无关的行为,数据库存根将被包括在内,只是为了让测试运行。
如果您想验证被测试对象是否将某些特定数据写入数据库,则必须模拟数据库。然后,您的测试将包含关于写入数据库模拟的内容的断言。
我认为TypeMock隔离器模仿框架的使用应该是TypeMocking。
它是一种生成模拟以用于单元测试的工具,无需在编写代码时考虑IoC。
Mock是以可控的方式模拟真实方法/对象的行为的方法/对象。模拟对象用于单元测试。
测试下的方法通常会调用它内部的其他外部服务或方法。这些被称为依赖关系。一旦模拟,依赖项就会按照我们定义的方式运行。
由于依赖项由mock控制,我们可以很容易地测试我们编写的方法的行为。这就是单元测试。
模拟对象的目的是什么?
mock vs stub
单元测试vs功能测试
如果您的模拟涉及网络请求,另一种替代方法是使用真正的测试服务器。您可以使用服务为您的测试生成请求和响应。
模拟类型的目的是切断依赖关系,以便将测试隔离到特定的单元。存根是简单的代理,而模拟是可以验证使用情况的代理。模拟框架是一种帮助您生成存根和模拟的工具。
编辑:由于最初的措辞提到“类型嘲弄”,我得到的印象是,这与TypeMock有关。根据我的经验,一般的说法就是“嘲笑”。请随意忽略下面的信息,特别是TypeMock。
TypeMock Isolator与大多数其他模拟框架的不同之处在于,它可以在运行中修改IL。这允许它模拟大多数其他框架无法模拟的类型和实例。为了用其他框架模拟这些类型/实例,你必须提供自己的抽象并模拟它们。
TypeMock以牺牲干净的运行时环境为代价提供了极大的灵活性。作为TypeMock实现其结果的方式的副作用,您在使用TypeMock时有时会得到非常奇怪的结果。
推荐文章
- 如何使用Jest测试对象键和值是否相等?
- 使用Moq验证特定参数
- 如何为python模块的argparse部分编写测试?
- python中的assertEquals和assertEqual
- 使用Mockito测试抽象类
- 使用Moq模拟单元测试的异步方法
- 你的项目没有引用“. net framework,Version=v4.6.2”框架。在“TargetFrameworks”中添加对“.NETFramework,Version=v4.6.2”的引用
- 使用Moq模拟扩展方法
- 基于输入参数模拟python函数
- 用于单元测试的NUnit vs. Visual Studio 2008测试项目
- 在使用信号时,你不能在'原子'块的末尾执行查询,但只能在单元测试期间执行
- .NET核心单元测试-模拟IOptions<T>
- 如何使用JUnit来测试异步进程
- 获取JUnit 4中当前正在执行的测试的名称
- 2个JUnit Assert类之间的区别