2017-09-10 5 views
0

:対応するテーブルの移行とRailsのテーブルはnullとminitestモデルのテスト:私は新しいレール5アプリケーション開始している偽の制約

rails g model user 

class CreateUsers < ActiveRecord::Migration[5.0] 
    def change 
    create_table :users do |t| 
     t.string :email,    null: false 
     t.string :password_digest, null: false 
     t.string :confirmation_token 
     t.datetime :confirmed_at 
     t.datetime :confirmation_sent_at 
     t.timestamps 
    end 
    end 
end 

rails new projectOne --api --database=postgresql 

は、ユーザモデルを作成しました

次の最小テストを実行すると、

require 'test_helper' 

class UserTest < ActiveSupport::TestCase 
    test "the truth" do 
    assert true 
    end 
end 

出力は次のとおりです。コンソールで

Error: 
UserTest#test_the_truth: 
ActiveRecord::StatementInvalid: PG::NotNullViolation: ERROR: null value in column "email" violates not-null constraint 
DETAIL: Failing row contains (980190962, null, null, null, null, null, 2017-09-10 18:58:52.08302, 2017-09-10 18:58:52.08302). 
: INSERT INTO "users" ("created_at", "updated_at", "id") VALUES ('2017-09-10 18:58:52.083020', '2017-09-10 18:58:52.083020', 980190962) 

、私は空のUserオブジェクトを作成することができますし、期待通りには、上記のエラーが発生するが、私は私のテスト内のオブジェクトを作成しようとしているものを理解していません。私は説明と、このテストに合格する方法のアドバイスを感謝します。

答えて

1

コマンドbundle exec rails g model SomeModelには、テストジェネレータが含まれています。テストジェネレータは、テストテンプレートとフィクスチャを生成します。

Fixturesは、サンプルデータのための素晴らしい単語です。フィクスチャを使用すると、 テストを実行する前に、 にテストデータベースをあらかじめ定義されたデータで入力することができます。備品はデータベースに依存せず、YAMLで書かれています。モデルあたり1ファイルが です。

環境を読み込み、テストデータベースにフィクスチャを挿入しようとする最小のテストです。これはあなたのケースでは失敗します。あなたは無効な器具を持っているように見えます。問題を解決するには、test/fixturesを確認し、フィクスチャを修正または削除してください。

続きを読むtesting in Railsを参照してください。

関連する問題