【问题标题】:Rspec Test Failing Says flash message not present when it isRspec 测试失败说闪烁消息在出现时不存在
【发布时间】:2011-06-27 06:54:33
【问题描述】:

我有一个使用 ajax 提交的表单。

这一切都有效。

这里是控制器:

 def create_bp
    @user = User.new(params[:user])
    respond_to do |format|
      if @user.save
        flash[:success] = "Your friend's details have been saved."
         #format.html { render :template => 'pages/home'}
         format.js   { render :action => "success" }
      else
        format.html { render :template => 'pages/home'}
        format.js   { render :action => "failure" }
      end
    end
  end

这是 user_controller_spec 测试:

   it "should show the correct flash message" do
            xhr :post, :create_bp, :user => @attr
            flash[:success].should =~ /Your friend's details have been saved./i
          end

这是测试失败时给出的信息:

  1) UsersController Ajax 'create_bp' success should show the correct flash message
     Failure/Error: flash[:success].should =~ /Your friend's details have been saved./i
       expected: /Your friend's details have been saved./i
            got: nil (using =~)
     # ./spec/controllers/user_controller_spec.rb:77:in `block (4 levels) in <top (required)>'

The flash message is being created and I can see it on the page as well. 

如果我在控制器中设置 flash[:success] 为什么它会说它为零?

【问题讨论】:

  • 您确定@user.save 正在返回 true 吗?可能验证失败。
  • 不确定,但由于您正在测试您的控制器,这是您想要添加 render_views 的情况吗?请参阅:stackoverflow.com/questions/9027518/… 另一种选择是使用水豚和黄瓜恕我直言测试这种更高级别的行为。
  • 在检查消息之前检查保存是否有效。这会让你生活得更轻松。

标签: ruby-on-rails-3 rspec


【解决方案1】:

尝试使用 flash.now[:success] 而不是 flash[:success] 用于 JS 案例。

def create_bp
  @user = User.new(params[:user])
  respond_to do |format|
    if @user.save
      flash.now[:success] = "Your friend's details have been saved."
      format.js   { render :action => "success" }
    else
      format.html { render :template => 'pages/home'}
      format.js   { render :action => "failure" }
    end
  end
end

【讨论】:

    猜你喜欢
    • 2014-09-15
    • 1970-01-01
    • 2011-09-05
    • 2020-01-18
    • 1970-01-01
    • 2020-03-16
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多