2017-11-04 10 views
0

私はいくつかのテストを書こうとしています。最初のものは非常に単純で、リソースがタイトルなしで保存されないことをテストします。 rake test test/models/item_test.rbを実行すると、このエラーを与える:`rake test`コマンドが間違ったモデルをテストします

Run options: --seed 8410 

# Running: 

E 

Finished in 0.027193s, 36.7740 runs/s, 0.0000 assertions/s. 

1) Error: 
ItemTest#test_should_not_save_item_without_title: 
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "admin_users" does not exist 
LINE 1: DELETE FROM "admin_users" 
       ^
: DELETE FROM "admin_users" 


1 runs, 0 assertions, 0 failures, 1 errors, 0 skips 

私のテストコードは次のとおりです。

require 'test_helper' 

class ItemTest < ActiveSupport::TestCase 
test "should not save item without title" do 
    item = Item.new 
    assert_not item.save 
end 
end 

はなぜadmin_usersは、その中に引き込まなっていますか?これは、のリソースをすべてのリソースにテストするときに発生します。

+2

'spec_helper.rb'ファイルに、次の行がありますか?' ActiveRecord :: Migration.maintain_test_schema! '?私は、テストデータベースのスキーマが最新ではないと推測しています。 – james00794

+0

@ james00794これは、rspecや 'spec_helper.rb'については何も言わず、次の通りです:http://guides.rubyonrails.org/testing.html。 rspecはちょうど言及されていない仮定ですか? – sabaeus

+1

あなたは正しいですが、そのガイドはRailsに付属の組み込みテストフレームワークのためのものです。そのガイドが説明するようにテストデータベースを準備しましたか( 'rake db:test:prepare')? – james00794

答えて

1

test/fixturesディレクトリに、データベース内の実際のテーブルに対応していないファイルが作成されている必要があります。モデルを削除するときに削除するのを忘れている可能性があります:)とにかく、 test/fixtures/admin_users.ymlを削除します。これには、他の自動生成されたフィクスチャも削除する必要があります。

関連する問題