“include_examples”和“it_behaves_like”有什么区别?

2024-03-19

在 RSpec 中,有什么区别it_behaves_like and include_examples?

The 文档 https://www.relishapp.com/rspec/rspec-core/v/2-14/docs/example-groups/shared-examples says:

include_examples— 包括当前上下文中的示例

it_behaves_like "name"— 包含嵌套上下文中的示例

但这实际上意味着什么?用另一种替换似乎对我的测试通过还是失败没有影响。在某些情况下是否有理由选择其中一种而不是另一种?

另外,还有it_should_behave_like and it_behaves_like只是同义词吗?


您可能知道如何使用describe, context, it and specify清晰地传达代码的一方面。提供的嵌套上下文it_behaves_like可用于改善与读者的沟通。

我的示例将基于 RSpec 文档中给出的示例分享的例子 https://www.relishapp.com/rspec/rspec-core/v/2-14/docs/example-groups/shared-examples:

shared_examples "a collection" do
  context "initialized with 3 items" do
    it "says it has three items" do
      # ...
    end
  end
end

describe Array do
  it_behaves_like "a collection"
  include_examples "a collection"
end

如果您运行 RSpec--format documentation你会得到以下输出:

Array
  behaves like a collection
    initialized with 3 items
      says it has three items
  initialized with 3 items
    says it has three items

因此,区别在于如何读取规范,例如在发生故障时。

您喜欢哪种风格取决于您喜欢如何阅读规格的美学问题。此外,如果您在团队中工作,您建议始终使用相同的风格以提高一致性。


另外, it_should_behave_like 和 it_behaves_like 只是同义词吗?

几乎,上下文的命名不同。it should behave like ... vs behaves like ...。又是一个审美问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“include_examples”和“it_behaves_like”有什么区别? 的相关文章

随机推荐

  • nodejs ffmpeg在特定时间播放视频并将其流式传输到客户端

    我正在尝试使用 nodeJS 和 ffmpeg 制作一个基本的在线视频编辑器 为此 我需要执行 2 个步骤 设置客户端视频的进出时间 要求客户端在特定的时间观看视频 并切换视频的位置 这意味着 如果使用单个视频作为输入 并将其分割成更小的部
  • java.io.InvalidClassException:本地类不兼容:

    我创建了客户端和服务器 然后在客户端添加了一个类用于序列化目的 然后只需转到硬盘驱动器中客户端的文件夹并将其复制粘贴到服务器对应的位置即可classname class and classname java分别 它在我自己的笔记本电脑上运行
  • 修改后的先序树遍历中的路径

    我已经实现了修改后的预序树遍历正如这里所解释的 http www sitepoint com hierarchical data database 2 我的树是这样的 ref name lft rgt NULL base 1 8 2 bas
  • 前向声明中的字段类型不完整[重复]

    这个问题在这里已经有答案了 我使用以下简单文件重现错误 它说 字段的类型 Foo 不完整 bar h class Foo class Bar private int x Foo foo error incomplete type publi
  • 受保护析构函数的基本原理

    我注意到许多 Poco 类都有一个受保护的析构函数 这使得它们的编码变得更加烦人 例如 这是我的一些代码 struct W2 Poco Util WinRegistryConfiguration typedef Poco Util WinR
  • Android 对话框,按下按钮时保持对话框打开

    我想在按下按钮时保持对话框打开 目前正在关闭 AlertDialog Builder builder new AlertDialog Builder this builder setMessage Are you sure you want
  • 在 javascript 资源中使用 Rails 辅助方法

    有没有办法使用 Rails 辅助方法 更具体地说 是 javascript 资源文件中的路径辅助方法 这个文件foo js coffee erb bar val 如果我能从 erubis 得到我会很高兴 bar val path to cr
  • 创建一段时间后删除会话文件

    我将会话保存在 temp 目录中的另一个目录中 说 session目录 使用session save path session 此外 还有一个代码可以在创建和注销 10 分钟后终止会话 但我提到 如果用户登录并关闭计算机 我的注销和会话销毁
  • 向 UITextField 添加不可编辑的文本后缀

    我有一个 UITextField 我想添加一个 所有输入文本的后缀 用户不应该能够删除这个 或在其右侧添加文本 解决这个问题的最佳方法是什么 Use the UITextFieldDelegate http developer apple
  • 转置前导维度为 N 的一维数组

    如何在没有额外空间的情况下转置前导维度为 N 的一维数组 任何语言都可以 我的一维就地矩阵转置解决方案 mn M N M rows and N columns q mn 1 i 0 Index of 1D array that repres
  • Chrome 多功能框特殊字符抛出错误

    我正在编写一个基本的 Chrome 扩展程序 以通过 JSON 源在多功能框中添加建议 几乎所有输入的查询都会在建议下拉列表中显示预期的结果 然而 每当描述中返回与号 时 Chrome 就会抛出错误 抛出的错误读取 xmlParseEnti
  • 获取句柄并写入启动我们进程的控制台

    我怎样才能写入一些已经打开的控制台的标准输出 我通过这段代码找到了我需要的控制台 IntPtr ptr GetForegroundWindow int u GetWindowThreadProcessId ptr out u Process
  • C++ 相当于 Java 的 andThen() 函数来组合新函数

    在Java中 您可以执行以下代码 Function
  • XSLT 转换抛出错误

    我有如下的xml
  • 在 Java 中,如何使用继承来简化代码? (安卓开发)

    在各种活动中我都有非常相似的方法 例如 Override public void onClick View v switch v getId case R id ibHome Intent menuIntent new Intent v g
  • 如何使用 OpenCV 查找图像中三角形的方向

    我试图找到图像中三角形的方向 下面是图片 这些三角形指向上 下 左 右 这不是真实的图像 我已经使用精明的边缘检测来查找边缘 然后找到轮廓 然后膨胀的图像如下所示 我寻找方向的逻辑 我想使用的逻辑是 在三个角坐标中 如果我可以识别三角形的基
  • JavaScript 定界文档

    我需要 JavaScript 中类似heredoc的东西 您对此有什么想法吗 我需要跨浏览器功能 我找到了这个 heredoc div ul li a href zzz zzz a li ul div 我认为这对我有用 Try ES6 字符
  • 为什么 Scala 隐式将 Char 转换为 Int?

    看看scala的Predef对象 这是自动导入的 我发现跟随宝石 http www scala lang org docu files api scala Predef 24object html char2int 28Char 29 im
  • 进度对话框显示太晚

    我有一个应用程序 我想执行以下操作 显示带有按钮和 TextView 的活动 用户单击按钮 应用程序会显示一个进度对话框 应用程序调用网络服务来获取列表 进度对话框被隐藏 并且列表选择对话框出现以显示检索到的列表 用户选择列表中的一项 项目
  • “include_examples”和“it_behaves_like”有什么区别?

    在 RSpec 中 有什么区别it behaves like and include examples The 文档 https www relishapp com rspec rspec core v 2 14 docs example