我一直在寻找如何为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
我在这里缺少什么?
答案 0 :(得分:0)
我愚蠢,你不能只执行:
rake test
你需要运行
rake test test/controllers/users/registrations_controller.rb
将'test / controllers / users / registrations_controller.rb'替换为控制器文件的路径