我正在查看这个答案以了解如何测试会话控制器并写了如下内容:
require 'spec_helper'
describe SessionsController do
context "We should login to the system and create a session" do
let :credentials do
{:user_name => "MyString", :password => "someSimpleP{ass}"}
end
let :user do
FactoryGirl.create(:user, credentials)
end
before :each do
post :create , credentials
end
it "should create a session" do
puts user.inspect
puts session[:user_id]
#session[:user_id].should == user.id
end
end
end
基于此,我创建了一个工厂女孩用户:
FactoryGirl.define do
factory :user, :class => 'User' do
name "sample_user"
email "MyString@gmail.com"
user_name "MyString"
password "someSimpleP{ass}"
end
end
现在一切正常 - 声明的 exceot before :each do
- 它从不“记录”“用户” - 因此我无法测试控制器的功能,是否正确创建了会话?
现在大多数人会说,使用 capybara 并通过这种方式对其进行测试——但这是错误的,IMO——确定我是否正在进行前端测试,但我正在测试基于控制器的逻辑。有人能告诉我为什么这不起作用吗?路由工作正常。
当它不应该出现时,我puts session[:user_id]
的出现为零