Danny Sofer
2008-Jun-24 15:39 UTC
[rspec-users] Suggestions on how to use stub_model with webrat?
Hi all, I am using story runner with webrat, but I am not sure how to incorporate stub_model into my tests. The webrat steps only care about the user interface and have nothing to say about interaction with the database. Following Ben Mabey, I have a line in my story like: "When clicks the Create button" And a step like: When "clicks the $button button" do |button| clicks_button button end Would it be sensible to extend it as follows: "And clicks the Create button to create a new thing" With step: When "clicks the $button button to create a new $resource" do |button, resource| klass = resource.classify.constantize stub_model(klass) clicks_button button end Or is there a better way of making sure that all required models are stubbed? many thanks, danny
David Chelimsky
2008-Jun-24 15:49 UTC
[rspec-users] Suggestions on how to use stub_model with webrat?
On Jun 24, 2008, at 10:39 AM, Danny Sofer wrote:> Hi all, > > I am using story runner with webrat, but I am not sure how to > incorporate stub_model into my tests.I''d recommend avoiding this. Stories are for integration testing. Examples are for isolation - that''s where you want to be stubbing out models.> The webrat steps only care about the user interface and have nothing > to say about interaction with the database. > > Following Ben Mabey, I have a line in my story like: > > "When clicks the Create button" > > And a step like: > > When "clicks the $button button" do |button| > clicks_button button > end > > Would it be sensible to extend it as follows: > > "And clicks the Create button to create a new thing" > > With step: > > When "clicks the $button button to create a new $resource" do | > button, resource| > klass = resource.classify.constantize > stub_model(klass) > clicks_button button > endThe stub_model method is not implicitly available in stories, but they are in a module that you can include in RailsStory if you really want to: RailsStory.send :include, Spec::Rails::Mocks> Or is there a better way of making sure that all required models are > stubbed?If your concern is global DB access and you really think you don''t need the DB for your stories, I''d recommend something like UnitRecord or NullDB instead. They can take care of things globally for you, reading schema.rb to get and cache the columns rather than hitting the db. HTH, David> > > many thanks, > > danny > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users