2017-08-21 40 views
0

我有一個ActionController::TestCase這是失敗的,我不知道爲什麼。在Rails系統測試中查看失敗觸發器

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: '[email protected]', 
     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

您可以使用assign訪問控制器實例變量,因此應該可以訪問該實例變量的錯誤並測試full_messages。如果記錄未創建的原因可能不起作用,因爲某些before_action阻止了create被調用。但是,您可以測試這種「撬」寶石是否會發生,並使binding.pry成爲創建的第一行。

在任何情況下,檢查實例變量...

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