我有一个Posts控制器,刚刚安装了Devise以快速简便地添加一些身份验证。在安装Devise之前,我已经为我的Posts控制器的“new”操作创建了一些测试。安装Devise后,我的测试失败了,直到我添加了标签。
将以下内容添加到我的spec_helper.rb文件中。
同时,我还有以下这行代码。
在我的PostsController中。
现在当我运行我的测试时,它们都通过了,除了这两个:
我也在使用Factory Girl。错误是由before_filter except参数引起的。我需要能够使用工厂用户在Rspec中登录用户。我如何在Rspec控制器测试中登录Factory用户?我如何定义Factory用户?
我已经在我的factories.rb文件中尝试了这个:
但是我收到了错误提示:
config.include Devise::TestHelpers, :type => :controller
将以下内容添加到我的spec_helper.rb文件中。
同时,我还有以下这行代码。
before_filter :authenticate_user!, :except => [:show, :index]
在我的PostsController中。
现在当我运行我的测试时,它们都通过了,除了这两个:
it "should be successful" do
get :new
response.should be_success
end
it "should have the right title" do
get :new
response.should have_selector('title', :content => @base_title + " | New post")
end
我也在使用Factory Girl。错误是由before_filter except参数引起的。我需要能够使用工厂用户在Rspec中登录用户。我如何在Rspec控制器测试中登录Factory用户?我如何定义Factory用户?
我已经在我的factories.rb文件中尝试了这个:
Factory.define :user do |user|
user.name "Test User"
user.email "user@example.com"
user.password "password"
user.password_confirmation "password"
end
但是我收到了错误提示:
NoMethodError:
undefined method `password_salt=' for #<User:0x00000103cac958>
非常感谢您的帮助。谢谢。
before(:each) do @user = create!(Factory(:user)) test_sign_in(@user) end
- JackFactory :user
,而不是create!(Factory(:user))
。Factory
已经创建了记录。 - Marnen Laibow-Koserdescribe "GET 'new'" do before(:each) do @user = Factory :user end it "应该成功" do get :new response.should be_success end end
.....factories.rb.....`Factory.define :user do |user| user.name "测试用户" user.email "user@example.com" user.password "password" user.password_confirmation "password"end` - JackUser#name=
未定义。再次确认,这可能意味着你忘记迁移测试数据库了... - Marnen Laibow-Koser