相关疑难解决方法(0)

使用Rails和Devise进行功能测试.把什么放在我的灯具里?

嗨,我想对使用Devise和CanCan的Rails 3应用程序进行一些功能测试.

在我的用户模型中,我有用户年龄,我想测试用户只能访问某个页面,如果他们是:

  1. 登录
  2. 超过35岁

我在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)

当我手动登录时,它在开发中工作正常,但我希望自动化它 - 真正的测试点!

ruby-on-rails functional-testing fixtures devise

26
推荐指数
2
解决办法
9662
查看次数