我的控制器中有以下内容:
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 selenium测试中,我想为电路板设置会话。但似乎我不能
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
如何设置会话以使此测试有效?
答案 0 :(得分:1)
我遇到了这个问题,并通过使用ApplicationController.session [:key]来解决它。
但现在我收到错误TypeError:
can't convert Symbol into Integer
level_spec.rb:7:in
[] ='`
答案 1 :(得分:0)
你确定正确调用夹具吗?它们通常是复数,如factories(:board)
。
您可以尝试在测试中明确设置它,看看您是否可以设置会话,而不是尝试从夹具加载。如果可以,那么你知道问题在于加载夹具。