Can anyone point me in the direction of the correct way to use rspec’s
configuration class to mixin modules into example groups (and add
before/after blocks) according to type.
I expected the following (very silly and contrived) code to
prepend_before,
prepend_after and include their respective blocks/mixin only for the
specs
with :type => :awe_inspiring but find that they get applied to all
example
groups.
require ‘spec’
module AMixin
def wow
end
end
Spec::Runner.configure do |config|
config.include(AMixin, :type => :awe_inspiring)
config.prepend_before(:type => :awe_inspiring) do
puts ‘before awe_inspiring test’
end
config.prepend_after(:type => :awe_inspiring) do
puts ‘after awe_inspiring test’
end
end
describe ‘without enthusiasm’, :type => :mediocre do
it “should do something without enthusiasm” do
puts ‘have wow’ if self.respond_to?(:wow)
end
end
describe ‘with enthusiasm’, :type => :awe_inspiring do
it “should do something with enthusiasm” do
puts ‘have wow’ if self.respond_to?(:wow)
end
end
Can anyone point me in the direction of the correct way to use rspec’s
configuration class to mixin modules into example groups (and add
before/after blocks) according to type.
I expected the following (very silly and contrived) code to prepend_before,
prepend_after and include their respective blocks/mixin only for the specs
with :type => :awe_inspiring but find that they get applied to all example
groups.
:type => :whatever is not an arbitrary tagging system. It supports
creating your own custom types of ExampleGroups. If it can’t find one
registered with the key, it gives you the default.
puts 'before awe_inspiring test'
end
describe ‘with enthusiasm’, :type => :awe_inspiring do
it “should do something with enthusiasm” do
puts ‘have wow’ if self.respond_to?(:wow)
end
end
You should be able to do something like this:
class AweInspiring < Spec::Example::ExampleGroup
def wow;end
Spec::Example::ExampleGroupFactory.register(:awe_inspiring, self)
end
Now you could use describe ‘with enthusiasm’, :type => :awe_inspiring
do and not have to worry about setting up the config to mix modules
in.
HTH,
David
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.