axx*_*axx 9 authentication tdd ruby-on-rails device functional-testing
我正在寻找解决奇怪问题的方法.我有一个控制器,需要身份验证(与设计宝石).我添加了Devise TestHelpers,但我无法让它工作.
require 'test_helper'
class KeysControllerTest < ActionController::TestCase
include Devise::TestHelpers
fixtures :keys
def setup
@user = User.create!(
:email => 'testuser@demomailtest.com',
:password => 'MyTestingPassword',
:password_confirmation => 'MyTestingPassword'
)
sign_in @user
@key = keys(:one)
end
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:keys)
end
test "should get new" do
get :new
assert_response :success
end
test "should create key" do
assert_difference('Key.count') do
post :create, :key => @key.attributes
end
assert_redirected_to key_path(assigns(:key))
end
test "should destroy key" do
assert_difference('Key.count', -1) do
delete :destroy, :id => @key.to_param
end
assert_redirected_to keys_path
end
Run Code Online (Sandbox Code Playgroud)
结束
我在"rake test"窗口中得到以下输出:
29) Failure:
test_should_create_key(KeysControllerTest) [/test/functional/keys_controller_test.rb:29]:
"Key.count" didn't change by 1.
<3> expected but was
<2>.
30) Failure:
test_should_destroy_key(KeysControllerTest) [/test/functional/keys_controller_test.rb:37]:
"Key.count" didn't change by -1.
<1> expected but was
<2>.
31) Failure:
test_should_get_index(KeysControllerTest) [/test/functional/keys_controller_test.rb:19]:
Expected response to be a <:success>, but was <302>
32) Failure:
test_should_get_new(KeysControllerTest) [/test/functional/keys_controller_test.rb:25]:
Expected response to be a <:success>, but was <302>
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我,为什么设计不认证?我正在使用与AdminController完全相同的程序,它完美无缺.
Mar*_*ske 23
你使用Devise与确认?在这种情况下,创建是不够的,您需要确认用户@user.confirm!
其次,为什么要在功能测试中创建用户?像这样在夹具中声明您的用户(如果您只需要确认,则为confirmed_at):
测试/装置/ users.yml里:
user1:
id: 1
email: user1@test.eu
encrypted_password: abcdef1
password_salt: efvfvffdv
confirmed_at: <%= Time.now %>
Run Code Online (Sandbox Code Playgroud)
并在您的功能测试中签名:
sign_in users(:user1)
Run Code Online (Sandbox Code Playgroud)
编辑:我刚刚看到,在我的应用程序中,Devise-Testhelpers在test/test-helpers.rb中声明,我不知道这是否有所作为,也许你想尝试:
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
class ActionController::TestCase
include Devise::TestHelpers
end
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
#
# Note: You'll currently still have to declare fixtures explicitly in integration tests
# -- they do not yet inherit this setting
fixtures :all
# Add more helper methods to be used by all tests here...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9088 次 |
| 最近记录: |