在rspec-2.11中有了新的expect语法,如何使用隐式subject呢?有没有比下面明确引用subject更好的方法?

describe User do
  it 'is valid' do
    expect(subject).to be_valid    # <<< can `subject` be implicit?
  end
end

推荐答案

如果将RSpec配置为禁用should语法,您仍然可以使用旧的单行程序语法,因为这并不涉及将should添加到每个对象:

describe User do
  it { should be_valid }
end

我们 Select 了另一种单行程序语法,但决定不使用,因为它不需要,而且我们觉得它可能会增加混乱.但是,如果您喜欢它的内容,您可以自己轻松添加:

RSpec.configure do |c|
  c.alias_example_to :expect_it
end

RSpec::Core::MemoizedHelpers.module_eval do
  alias to should
  alias to_not should_not
end

有了这个,你可以这样写:

describe User do
  expect_it { to be_valid }
end

Ruby相关问答推荐

清理 jruby 中输入数据的编码错误

根据部分已知值判断数组内容的简洁 Rubyist 方法是什么?

当一个方法在没有参数的 return 关键字上提前退出时,返回什么值?

字符串长度多显示一个字符 - ruby

Ruby 的 .() 运算符是如何工作的?

如何在 Ruby 中合并多个哈希?

使用 Ruby 将文件从一个目录复制到另一个目录

Ruby on Rails:你能把 Ruby 代码放在 YAML 配置文件中吗?

如何按长度对 Ruby 字符串数组进行排序?

在 Ruby 中将多个代码块作为参数传递

你能用 Ruby 开发原生 iPhone 应用程序吗?

使用 Ruby 将大写字符串转换为标题大小写

如何只获取没有命名空间的类名

to_proc 方法是什么意思?

了解 ruby​​-prof 输出

不能在windows上安装thin

Capybara:按值而不是文本 Select 选项

通过 factory_girl 协会查找或创建记录

在 Ruby 中解析制表符分隔文件的最佳方法是什么?

如何删除已安装的 ri 和 rdoc?