Rspec Test Failing Says: флэш-сообщение отсутствует, когда оно - PullRequest
3 голосов
/ 27 июня 2011

У меня есть форма, которая отправляется с использованием 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. 

Почему он говорит, что получил ноль, если я устанавливаю вспышку [: success] прямо в контроллере?

1 Ответ

0 голосов
/ 15 декабря 2012

Попробуйте использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...