嗨,我想对使用Devise和CanCan的Rails 3应用程序进行一些功能测试.
在我的用户模型中,我有用户年龄,我想测试用户只能访问某个页面,如果他们是:
我在Devise文档中看到我可以使用:*sign_in*并且我把它放在我的测试中它似乎工作 - 测试没有错误,因为我有:
include Devise::TestHelpers
Run Code Online (Sandbox Code Playgroud)
在我的*test_helper.rb*
当我拿出它时,我的测试会出错,因为*sign_in*没有定义.所以这不是帮手问题.
当我运行测试并检查span#loggedin是否有一次出现时,测试失败,因为有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 %>
Run Code Online (Sandbox Code Playgroud)
测试代码:
test "should get index" do
sign_in :one
get :index
assert_response :success
assert_select 'span#loggedin', :count => 1
end
Run Code Online (Sandbox Code Playgroud)
夹具:
one:
email: jez@example.com
age: 36
Run Code Online (Sandbox Code Playgroud)
当我手动登录时,它在开发中工作正常,但我希望自动化它 - 真正的测试点!