2012-04-02 13 views
0

私はレールのチュートリアルを通過すると、いくつかの理由についてsection 6.11railstutorial.org - 6.11 - rspecが失敗しました、postgresqlは問題ですか?

で午前午前、私は4例やチュートリアルのように4例と1不全(その結果、0)対RSpecの4つの失敗を取得しています。

私はRSpecのでこれを見ています:

Failure/Error: @user = User.new(name: "Example User", email: "[email protected]") 
    ActiveRecord::StatementInvalid: 
     PGError: ERROR: relation "users" does not exist 

事は、チュートリアルでは、sqliteのに沿って起こっているが、私はpostgresのに移行(以前のチュートリアルで提案されているように)ので、私はpostgresのを学ぶことができ同じように。これが問題の原因ですか?とにかく私が使用しているデータベースの種類については、activerecordで透明にしてはいけませんか? mgirateと

User.new(name: "Example User", email: "[email protected]") 

サンドボックスコンソールで正常に動作コマンド:

私は、適切なデータベースを作成し、私のdatabase.ymlをを更新した、デシベルを実行します。

大変助かりました。私はrspecの上にとどまりようとしています。私にはRailsを学ぶ上で最も難しい部分です。代わりにエネルギーの書き込みとデバッグのテストの90%を費やすような感じです。 (私がこれまでに遭遇した唯一のつまずきブロック/心曲げheadcaはRSpecのテストされている)

user_rspec.rb:

require 'spec_helper' 

describe User do 

    before do 
    @user = User.new(name: "Example User", email: "[email protected]") 
    end 

    subject { @user } 

    it { should respond_to(:name) } 
    it { should respond_to(:email) } 

    it { should be_valid } 

    describe "when name is not present" do 
    before { @user.name = " " } 
    it { should_not be_valid } 
    end 
end 

- 二疑問として

、私はそれを見つけます私のrspecテストは何度も実行されていますか?私はruby-gntp gemをインストールし、テストが実行されるたびに同じ情報を使って複数回ポップアップすることを発見しています。

rspec multiple times

答えて

3

OK、私はそれを考え出しました。

問題は、rake db:migrate、rake db:rollback、migrate、rake db:resetを実行していても、開発データベースがテストデータベースに移行されていないことでした。解決策は、データベースのクローンを作成することでした

bundle exec rake db:test:prepare 
0

私は同じような状況があった - SQLiteのからPGへの移行。 PGを再インストールした後、私は20 rspecの障害をすべてのユーザーの周りから始めました。

すくいデシベル:テスト: または バンドルのexecすくいデシベルを準備:テスト:を準備(設定に応じて)

Ruby Guides - mentions it too - http://guides.rubyonrails.org/testing.html

- 欲求不満の時間後に一つのコマンドはそれをすべて固定しました

あなたがテストデータベースを破壊してしまったら(それは起こるでしょう、信頼してください)、開発データベースで定義されている仕様に従ってゼロから再構築することができます。これは、rake db:test:prepareを実行することで実行できます。

関連する問題