【发布时间】:2011-06-02 10:34:27
【问题描述】:
您好,我想对使用 Devise 和 CanCan 的 Rails 3 应用程序进行一些功能测试。
在我的用户模型中,我有用户年龄,我想测试用户是否只能访问某个页面:
- 已登录
- 35岁以上
我在 Devise 文档中看到我可以使用:*sign_in* 并且我已将它放入我的测试中并且它似乎可以工作 - 测试没有出错,因为我有:
include Devise::TestHelpers
在我的 *test_helper.rb* 中
当我把它拿出来时,我的测试会出错,因为 *sign_in* 没有定义。所以这不是辅助问题。
当我运行测试并检查 span#loggedin 是否出现 1 次时,测试失败,因为出现 0 次。 span#loggedin 仅出现 *if user_signed_in?*
我需要在我的固定装置或测试中添加什么来创建一个测试用户,该用户也是一个完全注册的用户(确认等)?
查看代码:
<% 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
夹具:
one:
email: jez@example.com
age: 36
当我手动登录时它在开发中工作正常,但我希望将这一切自动化 - 真正的测试点!!
【问题讨论】:
标签: ruby-on-rails devise functional-testing fixtures