查看 Rails 系统测试中的故障触发器



我有一个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

有没有办法让帖子告诉我错误是什么?例如,有没有办法访问数组errors以调用errors.full_messages,当出现错误时,这些通常在结果视图中可用?

您可以使用assign访问控制器实例变量,因此应该可以访问该实例变量的错误并测试full_messages。 如果未创建记录的原因是某些before_action阻止调用create,则这可能不起作用。 但是您可以测试"撬"宝石是否发生这种情况,并将binding.pry作为创建的第一行。

无论如何,要检查实例变量...

post :create, user: { 
first_name: 'Alice',
email: 'alice@example.com',
password: 'adflihbrgshbart'
}
assert([], assign[:user].errors.full_messages)

最新更新