рд╕рд╛рдЭрд╛ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рднреАрддрд░ рдмреБрд▓рд╛рдП рдЬрд╛рдиреЗ рдкрд░ config.extend(...)
рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рддрд░реАрдХреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
module Foo
def something
puts 'hi'
end
end
RSpec.configure do |config|
config.extend(Foo)
end
RSpec.shared_context 'shared' do
something
end
рдкреНрд░рд┐рдВрдЯ 'рд╣рд╛рдп'
something
рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЙрд╕ рд╕рд╛рдЭрд╛ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдВрджрд░реНрдн рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ:
module Foo
def something
puts 'hi'
end
end
RSpec.configure do |config|
config.extend Foo
end
RSpec.shared_context 'shared' do
something
end
RSpec.describe do
include_context 'shared'
it { }
end
рдЖрдЙрдЯрдкреБрдЯ:
$ rspec spec/a_spec.rb
hi
Run options: exclude {:ruby=>#<Proc:./spec/spec_helper.rb:99>}
Randomized with seed 10987
example at ./spec/a_spec.rb:18
Finished in 0.00185 seconds (files took 1.19 seconds to load)
1 example, 0 failures
Randomized with seed 10987
рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИред рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЬрдм рдореИрдВ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдКрдВрдЧрд╛ рддреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реВрдВрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ:
module Foo
def something
puts 'hi'
end
end
RSpec.configure do |config|
config.extend Foo
end
RSpec.shared_context 'shared' do
something
end
RSpec.configure do |config|
config.include_context 'shared', foo: :enabled
end
RSpec.describe "Foo", foo: :enabled do
it { }
end
рдЖрдЙрдЯрдкреБрдЯ:
$ rspec spec/foo_spec.rb
An error occurred while loading ./spec/foo_spec.rb.
Failure/Error: something
NameError:
undefined local variable or method `something' for RSpec::ExampleGroups::Foo:Class
No examples found.
Finished in 0.00017 seconds (files took 1.35 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
@pirj рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рджрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ @tubaxenor рдиреЗ рдЕрд╕рдлрд▓ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рд╣реИред
рдкреНрд░рдЬрдирди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рд╡реЗрд╢ рдЖрджреЗрд╢ рд╣реИред рддреНрд╡рд░рд┐рдд рдбрд┐рдмрдЧ lib/rspec/core/configuration.rb:1513
рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЕрдЪреНрдЫреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдХрд┐рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рд╛рдЭрд╛ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЧрдИ рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА?
рдЖрдк 1513 рдФрд░ 1514 рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░рдХреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рд╕реНрдкреЗрдХреНрд╕ / рдлреАрдЪрд░реНрд╕ рдлреЗрд▓ рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдк рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?