2017-03-18 7 views
1

RubyとRailsを学び始めたばかりで、現在はユーザを認証してトークンを提供するコントローラを作成しました。これは、猿のテスト(周りをクリックして郵便配達を)やって完璧に動作しますが、このコマンドを使用してテストを行うとき:コントローラのユニットテストを開始する前に失敗しました

rails test 

もこのテストは失敗します。

require 'test_helper' 

class UserControllerTest < ActionDispatch::IntegrationTest 

    test "should be true" do 
    assert true 
    end 

end 

これが出力端子で、この:

Error: 
UserControllerTest#test_should_be_true: 
ActiveRecord::StatementInvalid: SQLite3::ConstraintException: NOT 
NULL constraint failed: users.email: INSERT INTO "users" ("created_at", 
"updated_at", "id") VALUES ('2017-03-18 11:11:35.973444', '2017-03-18 11:11:35.973444', 980190962) 

問題の内容を確認できません。 ActiveSupport内でユニットテストを作成しようとすると、TestCaseは同じ出力で失敗します。

誰も私にこの理由を教えてもらえますか?

Obs! ユーザーコントローラについての詳細が必要な場合は、コメントを投稿してください。ありがとう。問題は、あなたのtest/fixtures/users.ymlである可能性があり設定/環境/ test.rb

​​
+0

テストケースを実行する前に、電子メールなしでユーザーを保存しようとしています。それがエラーの理由です。テストフレームワークの設定を確認してください。 – 31piy

+0

@ 31piyテスト環境の設定を貼り付けました。それは正しい設定ですか? – McBoman

+0

貼り付けられたコードでは判別できません。あなたのコードはGithubや何か公開されているレポにホストされていますか? – 31piy

答えて

0

class ApplicationController < ActionController::Base 
    require 'json_web_token' 
    protect_from_forgery with: :exception 


    protected 
    def authenticate_request! 
    if !payload || !JsonWebToken.valid_payload(payload.first) 
     return invalid_authentication 
    end 

    load_current_user! 
    invalid_authentication unless @current_user 
    end 

    def invalid_authentication 
    render json: { error: 'Invalid Request'}, status: :unauthorized 
    end 


    private 
    def payload 
    auth_header = request.headers['Authorization'] 
    token = auth_header.split(' ').last 
    JsonWebToken.decode(token) 

    rescue 
    nil 
    end 

    def load_current_user! 
    @current_user = User.find_by(id: payload[0]['user_id']) 
    end 

end 

私のテストの設定:私のApplicationControllerには

編集

はこのコードを持っています。属性なし2人のユーザがあります。

one: {} 
# column: value 
# 
two: {} 
# column: value 

minitestは、それが空のフィールドを持つ2人のユーザーを作成しようと、それはemailにNULL制約に違反しないで起動します。これらの行を削除するか、正しい値を入力してください。

+0

それは感謝しました:-) – McBoman

関連する問題