Hi, I''m having some strange behavior on callbacks when testing with RSpec2. On my test, when I create a resource using the #create method the callbacks related to #before_create are not called. If I go to the console and I try to type the command Resource.create(client_uri: "http://example.com") all works fine. There are no mocks around, and I can''t understand if this is a normal behavior using RSpec, if its due to Mongoid or something else. # resource.rb (model) class Resource include Mongoid::Document before_create :random_code, :create_expiration # resource_rspec.rb (testing suite) let(:resource) { Resource.create(client_uri: "http://example.com") Thanks a lot -- Posted via http://www.ruby-forum.com/.
On Mar 2, 2011, at 11:49 AM, Andrea Reginato wrote:> Hi, I''m having some strange behavior on callbacks when testing with > RSpec2. On my test, when I create a resource using the #create method > the callbacks related to #before_create are not called. If I go to the > console and I try to type the command Resource.create(client_uri: > "http://example.com") all works fine. > > There are no mocks around, and I can''t understand if this is a normal > behavior using RSpec, if its due to Mongoid or something else. > > # resource.rb (model) > class Resource > include Mongoid::Document > before_create :random_code, :create_expiration > > # resource_rspec.rb (testing suite) > let(:resource) { Resource.create(client_uri: "http://example.com") > > Thanks a lotThere''s nothing in RSpec that implicitly interrupts the normal life cycle of any model objects. You can do so with stubs, but you have to do it explicitly. Is anybody else on this list having a similar experience?
Hi, Just been looking for answers to this very question: I have a User model (using devise) and the same problem. Both the before_create and after_create callbacks fail to run from within Rspec2 I can even put invalid code in the callbacks and it is not detected until I switch to dev and run through the browser - then it all works as expected. rails 3.0.5 and sqlite rspec (2.5.0) rspec-core (2.5.1) rspec-expectations (2.5.0) rspec-mocks (2.5.0) rspec-rails (2.5.0) Has anyone had any thoughts on this as yet ? Thanks H -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20110326/9a8bedf3/attachment.html>
On Mar 26, 2011, at 12:36 PM, Huw Nichols <huw.nichols at gmail.com> wrote:> Hi, > > Just been looking for answers to this very question: > > I have a User model (using devise) and the same problem. > > Both the before_create and after_create callbacks fail to run from within Rspec2 > > I can even put invalid code in the callbacks and it is not detected until I switch to dev and run through the browser - then it all works as expected. > > rails 3.0.5 and sqlite > rspec (2.5.0) > rspec-core (2.5.1) > rspec-expectations (2.5.0) > rspec-mocks (2.5.0) > rspec-rails (2.5.0) > > Has anyone had any thoughts on this as yet ? > > Thanks > > H > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-usersGot code?
OK, found the problem and it''s not rspec - my bad... Turns out that my spork config using guard etc. does not reload model files as it should - looking into that next Reloading spork (or killing it and running native) and all tests work as expected. Sorry for time waste H -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20110326/a6fd82ec/attachment.html>
On Sat, Mar 26, 2011 at 8:18 PM, Huw Nichols <huw.nichols at gmail.com> wrote:> OK, found the problem and it''s not rspec - my bad... > Turns out that my spork config using guard etc. does not reload model files > as it should - looking into that next > Reloading spork (or killing it and running native) and all tests work as > expected. > Sorry for time waste > HI''ve seen this same problem with a very similar setup. I believe it''s got to do with the way devise loads up the user model when routes are loaded, so basically it''s a problem between spork and devise. (I use guard as well, but I don''t think it is related.) I tried: https://github.com/timcharper/spork/wiki/Spork.trap_method-Jujutsu With no luck. You might want to take it to the spork mailing list.
On Sun, Mar 27, 2011 at 1:56 PM, Pixel <thecatwasnot at gmail.com> wrote:> On Sat, Mar 26, 2011 at 8:18 PM, Huw Nichols <huw.nichols at gmail.com> > wrote: > > OK, found the problem and it''s not rspec - my bad... > > Turns out that my spork config using guard etc. does not reload model > files > > as it should - looking into that next > > Reloading spork (or killing it and running native) and all tests work as > > expected. > > Sorry for time waste > > H > > > I''ve seen this same problem with a very similar setup. I believe it''s > got to do with the way devise loads up the user model when routes are > loaded, so basically it''s a problem between spork and devise. (I use > guard as well, but I don''t think it is related.) > > I tried: > https://github.com/timcharper/spork/wiki/Spork.trap_method-Jujutsu > With no luck. You might want to take it to the spork mailing list. > >Have a look at the very latest spork (0.9.0.rc4) on github - I can''t recall where I saw it mentioned yesterday but the combo of that devise fix you linked to and upgrading spork seems to be working for me now.. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20110327/46e82d07/attachment.html>