Hello every one, So my this rspec test fails: [code] it "should have a welcome message" do post :create, :user => @attr response.flash[:success].should eql("Welcome new user!") end [/code] However when I create a new user the flash message does display just as I had wanted it to. The controller has this in it: [code] def create @user = User.new(params[:user]) if @user.save flash[:success] = "Welcome new user!" redirect_to @user else @title = "Sign up" render ''new'' end end def show @user = User.find(params[:id]) @title = @user.userName end end [/code] And the view displays with: [code] <%= flash_helper %> The helper is: def flash_helper f_names = [:success] fl = '''' for name in f_names if flash[name] fl = fl + "<div class=\"notice\">#{flash[name]}</div>" end flash[name] = nil; end return fl.html_safe end [/code] Like I said the flash message works just fine however the test fails any ideas would be greatly appreciated. Hope all is well :) -- Posted via http://www.ruby-forum.com/.
James Martin
2011-Mar-11 01:27 UTC
[rspec-users] Trying to test flash messaging with rspec
How about just testing the flash directly, which should be accessible from your test: flash[:success].should =~ /welcome new user/i I''ve used a case insensitive regex here, which I think captures the intent of your test without being quite so rigid. What do you think? On Fri, Mar 11, 2011 at 10:06 AM, Tyrel R. <lists at ruby-forum.com> wrote:> Hello every one, > > So my this rspec test fails: > > [code] > it "should have a welcome message" do > post :create, :user => @attr > response.flash[:success].should eql("Welcome new user!") > end > [/code] > > However when I create a new user the flash message does display just as > I had wanted it to. > > The controller has this in it: > [code] > def create > @user = User.new(params[:user]) > if @user.save > flash[:success] = "Welcome new user!" > redirect_to @user > else > @title = "Sign up" > render ''new'' > end > end > > def show > @user = User.find(params[:id]) > @title = @user.userName > end > end > [/code] > > And the view displays with: > [code] > <%= flash_helper %> > > The helper is: > > def flash_helper > f_names = [:success] > fl = '''' > > for name in f_names > if flash[name] > fl = fl + "<div class=\"notice\">#{flash[name]}</div>" > end > flash[name] = nil; > end > return fl.html_safe > end > [/code] > > Like I said the flash message works just fine however the test fails any > ideas would be greatly appreciated. > > Hope all is well :) > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20110311/d0e136db/attachment.html>