0

я получаю испытание Fне может поразить базу данных, путем интеграции тестирования с MiniTest

«User.count» не изменится на 1.

, даже если я не должен (потому что SessionController # create действительно работает уже).

тестирования кода, как это:

- [переработан/ОБНОВЛЕНО] - Я также высадили все проверки в моделях, просто увидеть ... но ничего

class UsersSignupTest < ActionDispatch::IntegrationTest 

    test "valid signup information" do 

    OmniAuth.config.test_mode = false 

    get signup_path 
    assert_difference 'User.count', 1 do 
     get '/auth/identity/register', params: { 
     user: { name: "Example User", 
       email: "[email protected]", 
       password_digest: "password", 
       identities: { user_id: 1, 
           provider: "identity", 
           uid: "1"}}} 
    end 

    OmniAuth.config.test_mode = true 
    end 
end 

В полная мощность:

UsersSignupTest#test_valid_signup_information = 0.69 s = F 


Failure: 
UsersSignupTest#test_valid_signup_information [/home/lsoave/rails5/gitwatcher/test/integration/users_signup_test.rb:19]: 
"User.count" didn't change by 1. 
Expected: 5 
    Actual: 4 

с tail -f log/test.log я получаю следующее:

---------------------------------------------- 
UsersSignupTest: test_valid_signup_information 
---------------------------------------------- 
Started GET "/signup" for 127.0.0.1 at 2016-03-07 15:17:16 +0100 
Processing by UsersController#new as HTML 
    Rendered users/new.html.erb within layouts/application (37.7ms) 
    User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT $1 [["LIMIT", 1]] 
    Rendered layouts/_navigation.html.erb (3.6ms) 
    Rendered layouts/_signup-modal.html.erb (2.6ms) 
    Rendered layouts/_messages.html.erb (0.4ms) 
    Rendered layouts/_footer.html.erb (0.2ms) 
Completed 200 OK in 265ms (Views: 250.3ms | ActiveRecord: 0.6ms) 
    (0.4ms) SELECT COUNT(*) FROM "users" 
Started GET "/auth/identity/register?user[name]=Example+User&user[email]=user%40example.com&user[password_digest]=[FILTERED]&user[identities][user_id]=1&user[identities][provider]=identity&user[identities][uid]=1" for 127.0.0.1 at 2016-03-07 15:17:16 +0100 
    (0.3ms) SELECT COUNT(*) FROM "users" 
    (0.2ms) ROLLBACK 

UPDATE Примечание:

Реальная модель has_many пользователя идентичность/Идентичность belong_to отношения пользователя, я не уверен, что правильно представлена:

... 
params: { 
      user: { name: "Example User", 
        email: "[email protected]", 
        password_digest: "password", 
        identities: { user_id: 1, 
            provider: "identity", 
            uid: "1"}}} 
... 
+0

Возможно, одна из валидаций вашей модели пользователя не проходит. – GabrieleF

+0

@gabrielef Я также бросил все проверки в моделях, просто чтобы увидеть ... но ничего –

ответ

1

Попробуйте заменить тождества : штука с чем-то вроде:

identities_attributes: { '0': {provider: "identity", uid: "1"}} 

и ch Эк ваша модель пользователя содержит:

accepts_nested_attributes_for :identities 

Нет необходимости рассматривать себя с назначением user_id зависимой модели, то есть то, что Rails это хорошо.