您好,我想对使用 Devise 和 CanCan 的 Rails 3 应用程序进行一些功能测试。
在我的用户模型中,我有用户年龄,我想测试用户只能访问特定页面,如果他们是:
- 登录
- Over 35
我在 Devise 文档中看到我可以使用: *sign_in* 并且我已将其放入我的测试中并且它似乎有效 - 测试不会出错,因为我有:
include Devise::TestHelpers
在我的 *test_helper.rb* 中
当我取出它时,我的测试出错,因为 *sign_in* 未定义。所以这不是一个辅助问题。
当我运行测试并检查是否跨度#loggedin有 1 次出现,测试失败,因为出现 0 次。跨度#loggedin仅出现*如果用户登录?*
我需要在我的装置或测试中添加什么来创建一个同时也是完全注册用户(已确认等)的测试用户?
查看代码:
<% if user_signed_in? %>
<span id="loggedin">User is signed in</span>
User age is <span id="age"><%= current_user.age.to_s %></span>
<% end %>
测试代码:
test "should get index" do
sign_in :one
get :index
assert_response :success
assert_select 'span#loggedin', :count => 1
end
Fixture:
one:
email: [email protected] /cdn-cgi/l/email-protection
age: 36
当我手动登录时,它在开发中工作正常,但我希望将其全部自动化 - 真正的测试点!