测试:: Devise User :: RegistrationController

时间:2016-08-01 01:16:13

标签: ruby unit-testing ruby-on-rails-4 devise testunit

我一直在寻找如何为Devise 4.1.1注册控制器设置测试,我知道不建议这样做,但对于我的应用程序,注册控制器已经过特别定制,以满足我们的需求。用户表中只有几个新列在注册过程中被保存,因此我不认为它会影响测试环境。

我也知道可以通过集成测试来实现这一目标,但我现在希望通过单元测试来实现这一目标。

我已根据Devise

的建议在test_helper.rb中设置了此部分
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'

class ActiveSupport::TestCase
  # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
  fixtures :all

  # Add more helper methods to be used by all tests here...
end

#This is what I added:
class ActionController::TestCase
  include Devise::TestHelpers
end

我在文件夹controllers / users /中创建了一个名为registrations_controller.rb的新文件,因为它尚不存在,这就是内容:

require 'test_helper'

class Users::RegistrationsControllerTest < ActionController::TestCase
  setup do
    @request.env["devise.mapping"] = Devise.mappings[:user]
  end
  test "sign_up view" do
    get :new
    assert_response :success
    flunk("test flunk")
  end

end

运行rake test时,这是输出:

$ rake test
(in /home/www/dev)
Run options: --seed 163

# Running:



Finished in 0.010214s, 0.0000 runs/s, 0.0000 assertions/s.

0 runs, 0 assertions, 0 failures, 0 errors, 0 skips

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

我愚蠢,你不能只执行:

rake test

你需要运行

rake test test/controllers/users/registrations_controller.rb

将'test / controllers / users / registrations_controller.rb'替换为控制器文件的路径