On Mon, Oct 13, 2008 at 1:47 PM, Nick Hoffman <[EMAIL PROTECTED]> wrote:
> On 2008-10-12, at 23:49, O. Frabjous-Dey wrote: > >> Hi Nick, >> >> The :new action comes straight from script/generate rspec_scaffold: >> >> def new >> @group = Group.new >> >> respond_to do |format| >> format.html >> end >> end >> >> I took out the XML rendering, but left in the respond_to block just in >> case I wanted to add it or something else later. >> And here's :create. >> >> def create >> @group = Group.new(params[:group]) >> >> respond_to do |format| >> if @group.save >> flash[:notice] = 'Group was successfully created.' >> # Make this user an officer of the group >> Membership.create(:user_id => session[:user_id], :group_id => @ >> group.id, :rank => 'officer') >> format.html { redirect_to(@group) } >> else >> format.html { render :action => "new" } >> end >> end >> end >> >> Thanks! >> O. >> > > Hi again, O. In your spec, you're stubbing Group#new and returning a mock. > As a result, the "create" action uses that mock when creating the Membership > object. I've never specced relationships, so I'm not sure what to suggest. > Hopefully someone else can give some advice. > > Cheers, > Nick > > BTW, that last email of yours was sent directly to me, rather than to the > mailing list. Let's keep all of the messages on the list. > Whoops! Sorry this was sent straight to you, Nick. I should have hit Reply-all. (Also that the subject line isn't formatted correctly; I mistakenly thought that the listserv software would prepend [rspec-users] on its own.) I thought some more about the issue and I think I'm approaching the problem the wrong way to begin with. As I understand it, part of the philosophy of RSpec is that using mocks and stubs when testing controllers and views instead of touching the database helps to keep each test context self-contained. So I really ought to be checking to see if Membership.create or or Membership.new is being called instead of examining the model object's relationships themselves - not that I can anyway, since it's a mock model. Can anyone confirm if that sounds right? If so, what method should I be using? #should_receive? Thanks again in advance.
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users