WatirとRSpecを介して統合テストを実行しようとしています。そこで、/ Integration内にテストファイルを作成し、factory_girlを介してテストユーザーをベースに追加するテストを作成しました。
問題は、テストユーザーで実際にログインを実行できないことです。私が書いたテストは次のようになります。
...
before(:each)
@user = Factory(:user)
@browser = FireWatir::Firefox.new
end
it "should login"
@browser.text_field(:id, "username").set(@user.username)
@browser.text_field(:id, "password").set(@user.password)
@browser.button(:id, "get_in").click
end
...
テストを開始してブラウザに「パフォーマンス」が表示されると、常にUsername is not valid
エラーが発生します。
私は調査を開始し、小さなトリックを行いました。まず第一に、ファクトリが実際にDBにユーザーを作成するかどうか疑問に思い始めました。そのため、ファクトリをすぐに呼び出した後、ユーザーが実際にDBにputs User.find
いることを発見するためだけにいくつかのものを入れました。わかりましたが、ユーザーはまだログインできなかったので、自分の目で彼がDBに存在するかどうかを確認することにしました。
sleep
ファクトリコールの直後に追加し、現在DBに何があるかを見に行きました。ユーザーが実際にそこに行方不明になっているのを見て、私は押しつぶされました!どうして?それでも、コード内でユーザーを出力しようとすると、実際にはどこかからユーザーがフェッチされています。では、ランタイム内でfactory_girlによって作成されたレコードはどこにありますか?それですか、test
それともdev
DBですか?理解できません。
test
Mongrelをモードで実行しているかどうか(統合テストを調整しようとしているので、問題ないと思います)、およびdatabase.yml
正しい接続固有のデータを保持しているかどうかを10回チェックしました。
私はauthlogicを使用していますが、それが手がかりを与えることができる場合(いいえ、activate_authlogic
ここではパッティングは機能しません)。