访问正在运行的示例

在自定义匹配器的上下文中,您可以调用当前示例的示例组中可用的帮助器方法。例如,rspec-rails 使用它来包装 rails 的内置断言(依赖于测试上下文中可用的帮助器方法)。

从匹配器调用示例中定义的方法

给定一个名为“example_spec.rb”的文件,其中包含

RSpec::Matchers.define :bar do
  match do |_|
    foo == "foo"
  end
end

RSpec.describe "something" do
  def foo
    "foo"
  end

  it "does something" do
    expect("foo").to bar
  end
end

我运行 rspec ./example_spec.rb

然后输出应包含“1 个示例,0 个失败”。

从匹配器调用在示例中定义的方法

给定一个名为“example_spec.rb”的文件,其中包含

RSpec::Matchers.define :bar do
  match do |_|
    foo == "foo"
  end
end

RSpec.describe "something" do
  it "does something" do
    expect("foo").to bar
  end
end

我运行 rspec ./example_spec.rb

然后输出应包含“1 个示例,1 个失败”

并且输出应匹配 /undefined.*method/

并且输出应包含“RSpec::Matchers::DSL::Matcher”

并且输出不应包含“ExampleGroup”。