Rspec::WithParams
Simple parameterized testing with RSpec (a.k.a) table tests. Zero runtime dependencies (well, you bring RSpec to the party).
RSpec.describe "my complex business logic" do
extend RSpec::WithParams::DSL
with_params(
[:today, :schedule, :expected_date],
["2019-06-05", "weekly", "2019-06-13"],
["2019-06-05", "bi-weekly", "2019-06-20"],
["2019-06-05", "monthly", "2019-06-20"],
) do
it "determines the next appointment date" do
result = NextAppointmentCalculator.new.process(today, schedule)
expect(result).to eq expected_date
end
end
end
Output (with --format documentation
):
my complex business logic
given today -> "2019-06-05", schedule -> "weekly", expected_date -> "2019-06-13"
determines the next appointment date
given today -> "2019-06-05", schedule -> "monthly", expected_date -> "2019-06-20"
determines the next appointment date
given today -> "2019-06-05", schedule -> "bi-weekly", expected_date -> "2019-06-20"
determines the next appointment date
Finished in 0.00136 seconds (files took 0.12486 seconds to load)
3 examples, 0 failures
Usage
# Gemfile
group :test do
gem "rspec-with_params"
end
Extend specific test groups:
require "rspec/with_params/dsl"
RSpec.describe "my complex business logic" do
extend RSpec::WithParams::DSL
# examples...
end
Or configure RSpec globally:
require "rspec/with_params/dsl"
RSpec.configure do |config|
config.extend(RSpec::WithParams::DSL)
end
Alternatives
rspec-parameterized
- A more-complex, slicker DSL. Inspiration for this library.
License
The gem is available as open source under the terms of the MIT License.