【问题标题】:What exactly is the keyword "should" in RSpec RubyRSpec Ruby中的关键字“应该”到底是什么
【发布时间】:2012-05-23 10:21:38
【问题描述】:

我是 Ruby 的初学者,这个问题困扰了我很长时间。

在 RSpec 文件中,如果我们写 Book.should <do something>should 关键字是什么?它是 Book 对象的成员吗?它是如何成为 Book 对象的成员的?还是它是 Ruby 的某种构造?它是一个函数吗?如果它是函数或成员,我在哪里可以找到 this 的定义?

【问题讨论】:

  • 这个问题是stackoverflow.com/questions/3105755/…的重复问题
  • 该链接没有解释它的实际作用。关键字“应该”到底是什么?
  • +1 尝试理解魔法。
  • @MIkhail 我很想知道我可以在链接的答案 (stackoverflow.com/a/3114610/104219) 中添加什么来帮助解释。我试图提供一个链接的原始 RSpec 代码的精简示例。

标签: ruby rspec


【解决方案1】:

在加载时,RSpec 将 a module 包含到 Kernel 模块中,该模块包含在 Ruby 已知的所有对象中。因此,它可以使 should 方法对所有对象都可用。因此,should 不是关键字(如ifclassend),而是一个普通的方法。

请注意,mixin 仅在 RSpec 上下文中可用,因为它在加载或 RSpec 期间被“修补”。

【讨论】:

  • 这就是我想要的。谢谢
【解决方案2】:

我已经回答了与此here 类似的问题。基本上:

我认为 Holger 的回答可以更明确,并且最初可能让您感到困惑的是,should 打破了大多数常用的方法命名约定(例如,该方法没有描述它的作用)为了使代码作为一个整体被读成一个句子。

因此,该库不只是创建一组测试,而是试图鼓励您通过测试以类似于人类可读规范的方式描述您的应用程序。

【讨论】:

  • 创建一个条件为真的断言,该断言将作为测试的一部分运行。所以这类似于说assert x == y
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
相关资源
最近更新 更多