【问题标题】:Viewing failure triggers in Rails system tests在 Rails 系统测试中查看失败触发器
【发布时间】:2017-08-21 14:20:08
【问题描述】:

我有一个 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,当出现错误时,该方法通常可以在结果视图中使用?

【问题讨论】:

    标签: ruby-on-rails minitest system-testing


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 2015-06-25
      • 1970-01-01
      • 2018-05-08
      • 2020-12-10
      • 1970-01-01
      相关资源
      最近更新 更多