установить сеанс для объекта в интеграционном тесте Rspec - PullRequest
6 голосов
/ 06 июля 2011

В моем контроллере есть следующее:

def create
    @board = Board.find(session[:board])
    @greeting = @board.Greetings.build(params[:greeting])
    respond_to do |format|
      if @greeting.save
         format.js   { render :action => "success" }
      else
        format.js    { render :action => "failure" }
      end
    end
  end

В моем тесте на селен rspec я хочу установить сеанс для доски. Но, похоже, я не могу

  describe "greeting creation" do

     before(:each) do
        @board = Factory(:board)
        session[:board] = @board.id
      end

Это дает следующую ошибку:

  Failure/Error: session[:board] = @board.id
     NoMethodError:
       undefined method `session' for nil:NilClass

Как настроить сеанс, чтобы этот тест работал?

Ответы [ 2 ]

1 голос
/ 22 июля 2011

У меня была эта проблема, и я «решил» ее с помощью ApplicationController.session [: key].

Но теперь я получаю ошибку TypeError: can't convert Symbol into Integer level_spec.rb:7:in [] = '`

0 голосов
/ 06 июля 2011

Вы уверены, что прибор вызывается правильно?Они, как правило, множественного числа, например factories(:board).

. Вы можете попробовать просто установить его явно в тесте, чтобы посмотреть, сможете ли вы даже установить сеанс, вместо того, чтобы пытаться загрузить его из прибора.Если это работает, то вы знаете, что проблема в загрузке прибора.

...