Ruby on Rails:如何在测试中使用设计登录?

时间:2016-12-09 17:41:06

标签: ruby-on-rails ruby devise

我在测试中登录Devise时遇到问题。我正在使用Rails中的默认测试套件。

在我的测试帮助文件中,我已经定义了一个log_in方法,如下所示:

  $('.linkbox', context).once('linkbox').each(function(e){

    var $linkbox = $(this);
    var href = $linkbox.data('href');
    if (!href) {
      return;
    }
    var $hiddenLink = $('<a>').attr('href', href).hide().appendTo('body');
    $linkbox.click(function(e){
      $hiddenLink[0].dispatchEvent(new MouseEvent('click', {button: e.button, which: e.which}));
      e.preventDefault();
    });
  });

我没有收到任何错误,该方法只是没有让我登录。我知道这是因为我在没有登录时重定向用户,并且我的一个测试的结果是:

  def log_in
    @user = User.create(id: 1)
    sign_in(:user, @user)
  end
在设置中调用

sign_in就像这样......

ContentsControllerTest#test_should_show_content [E:/Uni/coursework/empire/test/controllers/contents_controller_test.rb:32]:
Expected response to be a <success>, but was <302>

对我如何登录的任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:0)

你也应该

include Devise::TestHelpers

这里有一些代码示例Minitest+Devise

答案 1 :(得分:0)

我通过将log_in方法更改为以下内容来解决我的问题:

  def log_in
    sign_in(users(:one))
  end

我之所以没有使用固定装置的原因是因为我遇到了导致一些奇怪错误的灯具问题。务必检查你的灯具。