Support simple parameterized test syntax in rspec.
# Nested Array Style
describe "plus" do
where(:a, :b, :answer) do
[
[1 , 2 , 3],
[5 , 8 , 13],
[0 , 0 , 0]
]
end
with_them do
it "should do additions" do
expect(a + b).to eq answer
end
end
with_them do
# Can browse parameters via `params` method in with_them block
# Can browse all parameters via `all_params` method in with_them block
it "#{params[:a]} + #{params[:b]} == #{params[:answer]}" do
expect(a + b).to eq answer
end
end
end
# Hash and Array Style
# Given parameters is each value combinations
# On this case
# [
# [1, 5, 2],
# [1, 5, 4],
# [1, 7, 2],
# [1, 7, 4],
# [1, 9, 2],
# [1, 9, 4],
# [3, 5, 2],
# [3, 5, 4],
# [3, 7, 2],
# [3, 7, 4],
# [3, 9, 2],
# [3, 9, 4]
# ]
describe "Hash arguments" do
where(a: [1, 3], b: [5, 7, 9], c: [2, 4])
with_them do
it "sums is even" do
expect(a + b + c).to be_even
end
end
end
# Table Syntax Style (like Groovy spock)
# Need ruby-2.1 or later
describe "plus" do
using RSpec::Parameterized::TableSyntax
where(:a, :b, :answer) do
1 | 2 | 3
5 | 8 | 13
0 | 0 | 0
end
with_them do
it "should do additions" do
expect(a + b).to eq answer
end
end
end
I was inspired by udzura's mock.
Add this line to your application's Gemfile:
gem 'rspec-parameterized'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rspec-parameterized
Require rspec-parameterized
from your spec_helper.rb
.
require 'rspec-parameterized'
Follow the sample spec above.
Arguments given to with_them
is directly passed to describe
. You can specify :pending
, :focus
, etc. here.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request