RSpec::PowerAssert
Support
- RSpec 2.14 or later
- If you use ruby-3.2.x or later, please use rspec-power_assert-1.2.0 or later
Installation
Add this line to your application's Gemfile:
gem 'rspec-power_assert'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rspec-power_assert
Usage
First, add require option to .rspec
-r rspec-power_assert
Use ExampleGroup.it_is_asserted_by
or ExampleGroup#is_asserted_by
describe Object do
it_is_asserted_by { a == b }
it do
is_asserted_by { a == b }
end
end
Config
verbose_successful_report
RSpec::PowerAssert.verbose_successful_report = true
If it set true, Successful Example reports with power_assert
outputs.
If it set false, Successful Example reports without power_assert
outputs.
Default is true.
example_assertion_alias
# enable `assert` method in Example block
RSpec::PowerAssert.example_assertion_alias :assert
example_group_assertion_alias
# enable `assert` method in ExampleGroup block
RSpec::PowerAssert.example_group_assertion_alias :assert
Sample
spec sample
describe RSpec::PowerAssert do
describe Array do
describe "#map" do
let(:array) { [1, 2, 3] }
subject { %w(a b c) }
before do
@array = [1, 2, 3]
end
it do
is_asserted_by { subject.map(&:upcase) == array }
end
it do
is_asserted_by {
subject.map(&:upcase) == array
}
end
it do
is_asserted_by { subject.map(&:upcase) == %w(A B C) }
end
it do
is_asserted_by {
subject.map(&:upcase) == %w(A B C)
}
end
it do
upcased = subject.map(&:upcase)
upcased.pop
is_asserted_by { upcased == @array }
end
it "should transform array" do
is_expected.to eq %w(a b c)
is_asserted_by { subject.map(&:upcase) == %w(A B C) }
end
it "should transform array (failed)" do
is_asserted_by { subject.map(&:upcase) == %w(A B) }
end
it_is_asserted_by { subject.map(&:upcase) == %w(A B C) }
it_is_asserted_by { subject.map(&:upcase) == %w(A B) }
it_is_asserted_by do
subject.map(&:upcase) == %w(A B C)
end
it_is_asserted_by "succ each element" do
subject.map(&:succ) == ["b", "c", "e"] + @array
end
end
end
end
output sample
RSpec::PowerAssert
Array
#map
example at ./spec/rspec/power_assert_spec.rb:13 (FAILED - 1)
example at ./spec/rspec/power_assert_spec.rb:17 (FAILED - 2)
should
be asserted by { subject.map(&:upcase) == %w(A B C) }
| | |
| | true
| ["A", "B", "C"]
["a", "b", "c"]
should
be asserted by { subject.map(&:upcase) == %w(A B C) }
| | |
| | true
| ["A", "B", "C"]
["a", "b", "c"]
example at ./spec/rspec/power_assert_spec.rb:33 (FAILED - 3)
should transform array
should transform array (failed) (FAILED - 4)
should
be asserted by { subject.map(&:upcase) == %w(A B C) }
| | |
| | true
| ["A", "B", "C"]
["a", "b", "c"]
example at ./spec/rspec/power_assert_spec.rb:50 (FAILED - 5)
should
be asserted by { subject.map(&:upcase) == %w(A B C) }
| | |
| | true
| ["A", "B", "C"]
["a", "b", "c"]
succ each element (FAILED - 6)
Failures:
1) RSpec::PowerAssert Array#map
Failure/Error: is_asserted_by { subject.map(&:upcase) == array }
is_asserted_by { subject.map(&:upcase) == array }
| | | |
| | | [1, 2, 3]
| | false
| ["A", "B", "C"]
["a", "b", "c"]
# ./lib/rspec/power_assert.rb:57:in `handle_result_and_message'
# ./lib/rspec/power_assert.rb:31:in `is_asserted_by'
# ./spec/rspec/power_assert_spec.rb:14:in `block (4 levels) in <top (required)>'
2) RSpec::PowerAssert Array#map
Failure/Error: is_asserted_by {
subject.map(&:upcase) == array
| | | |
| | | [1, 2, 3]
| | false
| ["A", "B", "C"]
["a", "b", "c"]
# ./lib/rspec/power_assert.rb:57:in `handle_result_and_message'
# ./lib/rspec/power_assert.rb:31:in `is_asserted_by'
# ./spec/rspec/power_assert_spec.rb:18:in `block (4 levels) in <top (required)>'
3) RSpec::PowerAssert Array#map
Failure/Error: is_asserted_by { upcased == @array }
is_asserted_by { upcased == @array }
| | |
| | [1, 2, 3]
| false
["A", "B"]
# ./lib/rspec/power_assert.rb:57:in `handle_result_and_message'
# ./lib/rspec/power_assert.rb:31:in `is_asserted_by'
# ./spec/rspec/power_assert_spec.rb:36:in `block (4 levels) in <top (required)>'
4) RSpec::PowerAssert Array#map should transform array (failed)
Failure/Error: is_asserted_by { subject.map(&:upcase) == %w(A B) }
is_asserted_by { subject.map(&:upcase) == %w(A B) }
| | |
| | false
| ["A", "B", "C"]
["a", "b", "c"]
# ./lib/rspec/power_assert.rb:57:in `handle_result_and_message'
# ./lib/rspec/power_assert.rb:31:in `is_asserted_by'
# ./spec/rspec/power_assert_spec.rb:45:in `block (4 levels) in <top (required)>'
5) RSpec::PowerAssert Array#map
Failure/Error: it_is_asserted_by { subject.map(&:upcase) == %w(A B) }
it_is_asserted_by { subject.map(&:upcase) == %w(A B) }
| | |
| | false
| ["A", "B", "C"]
["a", "b", "c"]
# ./lib/rspec/power_assert.rb:57:in `handle_result_and_message'
# ./lib/rspec/power_assert.rb:44:in `evaluate_example'
# ./spec/rspec/power_assert_spec.rb:50:in `block in it_is_asserted_by'
6) RSpec::PowerAssert Array#map succ each element
Failure/Error: it_is_asserted_by "succ each element" do
subject.map(&:succ) == ["b", "c", "e"] + @array
| | | |
| | | [1, 2, 3]
| | false
| ["b", "c", "d"]
["a", "b", "c"]
# ./lib/rspec/power_assert.rb:57:in `handle_result_and_message'
# ./lib/rspec/power_assert.rb:44:in `evaluate_example'
# ./spec/rspec/power_assert_spec.rb:56:in `block in it_is_asserted_by'
Finished in 0.01725 seconds (files took 0.12235 seconds to load)
11 examples, 6 failures
Failed examples:
rspec ./spec/rspec/power_assert_spec.rb:13 # RSpec::PowerAssert Array#map
rspec ./spec/rspec/power_assert_spec.rb:17 # RSpec::PowerAssert Array#map
rspec ./spec/rspec/power_assert_spec.rb:33 # RSpec::PowerAssert Array#map
rspec ./spec/rspec/power_assert_spec.rb:44 # RSpec::PowerAssert Array#map should transform array (failed)
rspec ./spec/rspec/power_assert_spec.rb:50 # RSpec::PowerAssert Array#map
rspec ./spec/rspec/power_assert_spec.rb:56 # RSpec::PowerAssert Array#map succ each element
On RSpec-3.3 or later, support aggregate_failures
(Thanks sue445)
2) RSpec::PowerAssert Array#map When use aggregate_failures should be called be is_asserted_by with 3 times
Got 2 failures from failure aggregation block.
# ./spec/rspec/power_assert_spec.rb:81:in `block (5 levels) in <top (required)>'
2.1) Failure/Error: is_asserted_by { subject.map(&:upcase) == %w(a b c) }
is_asserted_by { subject.map(&:upcase) == %w(a b c) }
| | |
| | false
| ["A", "B", "C"]
["a", "b", "c"]
# ./lib/rspec/power_assert.rb:81:in `handle_result_and_message'
# ./lib/rspec/power_assert.rb:50:in `is_asserted_by'
# ./spec/rspec/power_assert_spec.rb:82:in `block (6 levels) in <top (required)>'
2.2) Failure/Error: is_asserted_by { subject.map(&:upcase) == %w(A B C D) }
is_asserted_by { subject.map(&:upcase) == %w(A B C D) }
| | |
| | false
| ["A", "B", "C"]
["a", "b", "c"]
# ./lib/rspec/power_assert.rb:81:in `handle_result_and_message'
# ./lib/rspec/power_assert.rb:50:in `is_asserted_by'
# ./spec/rspec/power_assert_spec.rb:84:in `block (6 levels) in <top (required)>'
Finished in 0.02937 seconds (files took 0.19416 seconds to load)
2 examples, 2 failures
Contributing
- Fork it ( https://github.com/joker1007/rspec-power_assert/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request