自定义设置

像 rspec-rails 这样的扩展可以添加自己的配置设置。

简单设置(带默认值)

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

RSpec.configure do |c|
  c.add_setting :custom_setting
end

RSpec.describe "custom setting" do
  it "is nil by default" do
    expect(RSpec.configuration.custom_setting).to be_nil
  end

  it "is exposed as a predicate" do
    expect(RSpec.configuration.custom_setting?).to be(false)
  end

  it "can be overridden" do
    RSpec.configuration.custom_setting = true
    expect(RSpec.configuration.custom_setting).to be(true)
    expect(RSpec.configuration.custom_setting?).to be(true)
  end
end

我运行 `rspec ./additional_setting_spec.rb`

那么示例应该全部通过。

默认为 `true`

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

RSpec.configure do |c|
  c.add_setting :custom_setting, :default => true
end

RSpec.describe "custom setting" do
  it "is true by default" do
    expect(RSpec.configuration.custom_setting).to be(true)
  end

  it "is exposed as a predicate" do
    expect(RSpec.configuration.custom_setting?).to be(true)
  end

  it "can be overridden" do
    RSpec.configuration.custom_setting = false
    expect(RSpec.configuration.custom_setting).to be(false)
    expect(RSpec.configuration.custom_setting?).to be(false)
  end
end

我运行 `rspec ./additional_setting_spec.rb`

那么示例应该全部通过。

在随后的 `RSpec.configure` 块中被覆盖

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

RSpec.configure do |c|
  c.add_setting :custom_setting
end

RSpec.configure do |c|
  c.custom_setting = true
end

RSpec.describe "custom setting" do
  it "returns the value set in the last configure block to get eval'd" do
    expect(RSpec.configuration.custom_setting).to be(true)
  end

  it "is exposed as a predicate" do
    expect(RSpec.configuration.custom_setting?).to be(true)
  end
end

我运行 `rspec ./additional_setting_spec.rb`

那么示例应该全部通过。