ruby on rails - RSpec passing variable or (let variable) to it block -
ruby on rails - RSpec passing variable or (let variable) to it block -
here's code have spec wrote. trying each array(payments), when seek add together allow variable on top of block it's telling me variable or method not exist. assuming variable not beingness called.
can take @ how should reogranize spec can this:
payments.each |p| "updates payment record of #{p.id} status of #{p.status}" payments.each |p| payment = payment.find_by_id(p.id) payment_status = payment.status payment_status = p.status subject expect(payment.find_by_id(p.id).status).to_not eq(payment_status) end end end
original spec code:
describe "patch #submit" subject { patch :pay, :payment => [payments] } context "when submission valid" let(:payments) { [] } let(:admin) { factorygirl.create(:admin) } let(:member) { factorygirl.create(:member) } let(:user) { factorygirl.create(:user } before :each rand(2..4).times { payments << factorygirl.create(:payment, :payor => member, :merchant => user) } sign_in admin end "updates status of payment" p = payments.sample #get random payment submitted payment = payment.find_by_id(p.id) payment_status = payment.status subject p.reload expect(p.status).to_not eq(payment_status) end "updates record in array" payments.each |p| payment = payment.find_by_id(p.id) payment_status = payment.status payment_status = p.status subject expect(payment.find_by_id(p.id).status).to_not eq(payment_status) end end end end
stack trace:
kareem@kareem-vaio:~/git/dns$ bundle exec rspec ./spec/controllers/payments_controller_spec.rb:320 coverage study generated rspec /home/kareem/git/dns/coverage. 256 / 673 loc (38.04%) covered. /home/kareem/git/dns/spec/controllers/payments_controller_spec.rb:320:in `block (3 levels) in <top (required)>': undefined local variable or method `payments' #<class:0x007f91b6085b70> (nameerror) /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `module_exec' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `subclass' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:219:in `block in define_example_group_method' /home/kareem/git/dns/spec/controllers/payments_controller_spec.rb:300:in `block (2 levels) in <top (required)>' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `module_exec' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `subclass' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:219:in `block in define_example_group_method' /home/kareem/git/dns/spec/controllers/payments_controller_spec.rb:298:in `block in <top (required)>' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `module_exec' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `subclass' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:219:in `block in define_example_group_method' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/dsl.rb:41:in `block in expose_example_group_alias' /home/kareem/git/dns/spec/controllers/payments_controller_spec.rb:3:in `<top (required)>' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `block in load_spec_files' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `each' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load_spec_files' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:96:in `setup' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:84:in `run' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:69:in `run' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:37:in `invoke' /home/kareem/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/exe/rspec:4:in `<top (required)>' /home/kareem/.rbenv/versions/2.1.3/bin/rspec:23:in `load' /home/kareem/.rbenv/versions/2.1.3/bin/rspec:23:in `<main>'
you can't utilize variables defined let
outside of specs. if want have available, define method on spec , utilize that.
this question seems similar, similar response.
ruby-on-rails ruby rspec
Comments
Post a Comment