Hi, I''m new on tests but trying to test the following method, but it gives me an error message about "nil is not a symbol". # job.rb = def publish(url) update_attributes(:available => true, :locked => false) tweet(url) end # job_spec.rb == it "should publish a job" do @job = Factory(:job, :available => false) lambda { @job.publish }.should change(@job.available).from(false).to(true) end # error = 1) Job Job publish should publish a job Failure/Error: lambda { @job.publish }.should change(@job.available).from(false).to(true) nil is not a symbol # ./spec/models/job_spec.rb:128:in `block (3 levels) in <top (required)>'' Finished in 1.12 seconds 47 examples, 1 failure, 4 pending any idea? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
How does your factory declaration look like? On Feb 2, 3:55 am, Kleber Shimabuku <klebershimab...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi, I''m new on tests but trying to test the following method, but it > gives me an error message about "nil is not a symbol". > > # job.rb > => def publish(url) > update_attributes(:available => true, :locked => false) > tweet(url) > end > > # job_spec.rb > ==> it "should publish a job" do > @job = Factory(:job, :available => false) > lambda { @job.publish }.should > change(@job.available).from(false).to(true) > end > > # error > => 1) Job Job publish should publish a job > Failure/Error: lambda { @job.publish }.should > change(@job.available).from(false).to(true) > nil is not a symbol > # ./spec/models/job_spec.rb:128:in `block (3 levels) in <top > (required)>'' > > Finished in 1.12 seconds > 47 examples, 1 failure, 4 pending > > any idea?-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
In this block: lambda { @job.publish }.should change(@job.available).from(false).to(true) end try putting the arguments to the change method in curly braces: lambda { @job.publish }.should change{@job.available}.from(false).to(true) end If you pass the method parameters, which is what it expects with parantheses, it expects two arguments, the second of which would be the method name in the form of a symbol, which I think explains the ''nil is not a symbol'' error you''re getting. By the way, if you''re upgrading RSpec1 to RSpec2, there''s a cheat sheet of changes here: http://snyderscribbles.blogspot.com/2011/01/rspec-2-changes-from-rspec-1.html On Feb 1, 5:55 pm, Kleber Shimabuku <klebershimab...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi, I''m new on tests but trying to test the following method, but it > gives me an error message about "nil is not a symbol". > > # job.rb > => def publish(url) > update_attributes(:available => true, :locked => false) > tweet(url) > end > > # job_spec.rb > ==> it "should publish a job" do > @job = Factory(:job, :available => false) > lambda { @job.publish }.should > change(@job.available).from(false).to(true) > end > > # error > => 1) Job Job publish should publish a job > Failure/Error: lambda { @job.publish }.should > change(@job.available).from(false).to(true) > nil is not a symbol > # ./spec/models/job_spec.rb:128:in `block (3 levels) in <top > (required)>'' > > Finished in 1.12 seconds > 47 examples, 1 failure, 4 pending > > any idea?-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.