我有ActionController::TestCase失败了,我不知道为什么。
require 'test_helper'
class UsersControllerTest < ActionController::TestCase
setup do
@user = users(:bob)
sign_in @user
end
test "should create user" do
assert_difference('User.count') do
post :create, user: {
first_name: 'Alice',
email: 'alice@example.com',
password: 'adflihbrgshbart'
}
end
end
end
结果是
Failure:
UsersControllerTest#test_should_create_user [.../dev/test/controllers/users_controller_test.rb:23]
Minitest::Assertion: "User.count" didn't change by 1.
Expected: 5
Actual: 4
有没有办法让post告诉我错误是什么?例如,有没有一种方法可以访问errors
数组来调用errors.full_messages
,当出现错误时,该数组通常在结果视图中可用?
答案 0 :(得分:0)
您可以使用assign
访问控制器实例变量,因此应该可以访问该实例变量的错误并测试full_messages。如果创建记录的原因是因为某些before_action
阻止了create
被调用,则此功能可能无效。但你可以测试一下这种情况是否发生在&#39; pry&#39; gem并将binding.pry
作为创建的第一行。
无论如何,要检查实例变量......
post :create, user: {
first_name: 'Alice',
email: 'alice@example.com',
password: 'adflihbrgshbart'
}
assert([], assign[:user].errors.full_messages)