Rspec-core: рдПрдХ рд╕рд╛рдЭрд╛ рд╕рдореВрд╣ рдореЗрдВ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдПрдХрд▓ рдЪрд╢реНрдорд╛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЬреБрд▓ре░ 2010  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: rspec/rspec-core

рд╕рд╛рдЭрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реВрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдмреИрдХрдЯреНрд░реЗрд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

8)
RuntimeError in 'Arel Join#each iterates over the rows in any order'

/Users/apatterson/git/arel/spec/../lib/arel/algebra/relations/operations/join.rb:14:in `hash'
/Users/apatterson/git/arel/spec/../lib/arel/session.rb:38:in `[]'
/Users/apatterson/git/arel/spec/../lib/arel/session.rb:38:in `read'
/Users/apatterson/git/arel/spec/../lib/arel/algebra/relations/relation.rb:21:in `each'
/Users/apatterson/git/arel/spec/support/matchers/have_rows.rb:5:in `have_rows'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/simple_matcher.rb:16:in `call'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/matchers/simple_matcher.rb:16:in `matches?'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/handler.rb:11:in `handle_matcher'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/expectations/extensions/kernel.rb:27:in `should'
/Users/apatterson/git/arel/spec/shared/relation_spec.rb:23:
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/example/example_methods.rb:40:in `instance_eval'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/example/example_methods.rb:40:in `execute'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:53:in `timeout'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/example/example_methods.rb:37:in `execute'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/example/example_group_methods.rb:214:in `run_examples'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/example/example_group_methods.rb:212:in `each'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/example/example_group_methods.rb:212:in `run_examples'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/example/example_group_methods.rb:103:in `run'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/runner/example_group_runner.rb:23:in `run'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/runner/example_group_runner.rb:22:in `each'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/runner/example_group_runner.rb:22:in `run'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/runner/options.rb:152:in `run_examples'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/lib/spec/runner/command_line.rb:9:in `run'
/Library/Ruby/Gems/1.8/gems/rspec-1.3.0/bin/spec:5

рдпрд╣рд╛рдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред

1) рдмреИрдХрдЯреНрд░реИрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕рд╛рдЭрд╛ рд╕реНрдкреЗрдХ рдХрд╛ рд╕рдВрджрд░реНрдн рдХреНрдпрд╛ рд╣реИред рдЙрд░реНрдл, рдЗрд╕реЗ рдХрд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдореЗрдВ рдХреМрди рд╕реА рдлрд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рдереА, рдЖрджрд┐ ... рд╡рд┐рд╡рд░рдг рд╣реИ 'рдПрд░реЗрд▓ рдЬреЙрдЗрди # рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд░рддрд╛ рд╣реИ', рд▓реЗрдХрд┐рди рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЪрд╢реНрдореЗ рдХреЗ рд╕рд╛рде, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИ рдореБрдЭреЗред

2) рдореИрдВ рдЙрд╕ рдПрдХрд▓ рдпреБрдХреНрддрд┐ рдХреЛ рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрднреА рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рдХрд┐рд╕реА рд╕рд╛рдЭрд╛ рд╕рдореВрд╣ рдореЗрдВ rspec spec/my_spec_that_contains_the_shared_group.rb --example "hello world" рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ

рд╕рднреА 10 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдбреЗрд╡рд┐рдб, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

рдЬрдм "it_should_behave_like" (рдпрд╛ рдЙрдкрдирд╛рдо) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╕рдореВрд╣ рдкрд░ рдирд┐рдореНрди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ:

рд╕рд╛рдЭрд╛ рдЙрджрд╛рд╣рд░рдг рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо.
рдлрд╝рд╛рдЗрд▓ рдкрде рдФрд░ рд▓рд╛рдЗрди рдирдВрдмрд░ "it_should_behave_like" рдореЗрдердб рдХреЙрд▓ред

рдЬрдм рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ RSpec рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдЙрджрд╛рд╣рд░рдг рд╕рдореВрд╣ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдкрде рдФрд░ рд▓рд╛рдЗрди рдирдВрдмрд░ (рдЙрджрд╛рд╣рд░рдг рд╕рдореВрд╣ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд) рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?

рдУрд╣ рдЕрдЪреНрдЫрд╛, рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ :-)

рдореИрдВрдиреЗ @justinko рдХреЗ рдкреИрдЪ (3906559d059bcdbd4d15303303c517088b038eeb) рдХреЛ рдорд░реНрдЬ рдХрд░ рджрд┐рдпрд╛, рдЬреЛ рдЙрд╕ рд▓рд╛рдЗрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд╛рдЭрд╛ рд╕рдореВрд╣ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рд╣рдо рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╕рд╛рдЭрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рд╕рд╛рдЭрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ред

рдЖрдк рдХрд┐рд╕реА рд╕рд╛рдЭрд╛ рд╕рдореВрд╣ рдореЗрдВ rspec spec/my_spec_that_contains_the_shared_group.rb --example "hello world" рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ

рд╣рд╛рдБ - рдпрд╣ рд╕рдЪ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдлреА рд╣реИред рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред @carllerche рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ

рдмрдХрд╡рд╛рд╕, рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЧ рдорд┐рд▓рд╛:

share_as :MySpecs do
  let(:foo) { described_class # returns nil }

рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВ share_as рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП include рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдиреЗрд╕реНрдЯреЗрдб рд╕рдореВрд╣ рдмрдирд╛рдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм рд╣рдо shared_examples_for рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВред рдбрдмреНрд▓реНрдпреВрдбреАрд╡рд╛рдИрдЯреА?

рдореИрдВ рдЗрд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ RSpec рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рдерд╛ рдХрд┐ shared_examples_for рдФрд░ share_as ред

рдореИрдВ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП share_as рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

describe Model do
  include MySharedSpecs

  context 'it works' do
    it_should_behave_like 'a working model'

рдореИрдВрдиреЗ shared_examples_for рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдФрд░ рд╕рдм рдареАрдХ рд╣реИред рдзрдиреНрдпрд╡рд╛рджред

рдиреАрдЪреЗ рдХреА рдУрд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд╕реНрдЯрд┐рдирдХреЛ рдиреЗ рдЙрдкрд░реЛрдХреНрдд рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреЛрд╖рдЬрдирдХ рдЙрддреНрддрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИред

рдЖрдк рдХрд┐рд╕реА рд╕рд╛рдЭрд╛ рд╕рдореВрд╣ рдореЗрдВ rspec spec/my_spec_that_contains_the_shared_group.rb --example "hello world" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

alexcoplan picture alexcoplan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

marcparadise picture marcparadise  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

deepj picture deepj  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wwood picture wwood  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

take picture take  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ