メインコンテンツまでスキップ

カスタム設定

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を実行すると、

すべての例がパスするはずです。