問題タブ [rspec-rails]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
1526 参照

ruby-on-rails - Rspec、NiftyAuthenticationを使用したテスト

私はRyanBatesを使用nifty:authenticationしており、Rspecでテストを開始しています。何週間もこれと戦いましたが、それでも何が起こっているのか理解できません。

私のコントローラーは単に呼び出します

これはlib/controller_authenticationで定義されています

アプリは意図したとおりに動作しますが、テストは毎回失敗します。何をしようとも、redirect_to login_url, :alert => "You must first ...log in"ページが表示されます。

私が試したこと:

これは、私が物事の理論全体を見逃していることを意味すると思います。ログインを機能させるにはどうすればよいですか?


Punitが以下に示唆するように私は試しました:[pre]

@ account.inspectはうまく表示されましたが、私も

何が起こっているのかを理解するために高低を検索したので、詳細な説明をありがとう。

0 投票する
4 に答える
4356 参照

ruby-on-rails - Factory Girl / カピバラがテスト中にデータベースからレコードを削除?

RSpec と Capybara を使用すると、興味深いテスト失敗モードが得られます。これは、テスト ケース内の行のいくつかの微妙な再配置で解消されます...問題にならないものです。

独自の認証システムを開発しています。現在動作しており、ブラウザでログイン/アウトでき、セッションも動作します。ただし、これをテストしようとすると失敗します。(一見) 無関係な呼び出しの順序に依存しているように見える、よく理解できないことが起こっています。

そのままでは、そのテストは失敗します...ログインは失敗します。スペックとコントローラーの両方に「デバッガー」呼び出しを挿入した後、理由がわかります。コントローラーに関する限り、ユーザーはデータベースに挿入されていません。

ApplicationController に追加する編集

コンソールの上記のブレークポイントで:

ただし、テストで数行を並べ替えて、「2」行を「1」行の上に配置すると、次のようになります。

コンソールでこれを取得します(上記と同じブレークポイント):

簡潔にするために、ユーザー オブジェクトのコンテンツの完全なダンプは省略しましたが、テストが期待どおりに完了することは保証できます。

テストに合格するために行を交換するというこの動作は、これらのコマンドで何が行われるべきかについての私の考えとはあまり一致せず、他の領域での私のテストにとってかなりの負担になることが証明されています。

ここで何が起こっているかについてのヒントはありますか?

この問題を提示するアイデアについて Google と SO を精査しましたが、RSpec/Capybara と Sessions に関する SO の質問に事欠きません。しかし、何もぴったりとは思えませんでした。

ご覧いただきありがとうございます。

アップデート

ブレークポイント (visit 呼び出しの直前) といくつかのデバッグをテストに追加し、次のように戻ってきました。

明らかに、visit の途中で何かが Factory Girl にユーザー オブジェクトの処理が完了したことを伝え、それで彼女はそれを削除するのでしょうか?

編集test.log を注意深く調べた後、何も削除を発行していません。だから私は多かれ少なかれ振り出しに戻っています。

0 投票する
2 に答える
6294 参照

ruby-on-rails-3 - 「redirect_to root_path」は RSpec 統合テストでリダイレクトとして表示されません

次のルートを持つレールアプリがあります

私の ApplicationController には、ロケール オプションを自動的に設定する default_url_options() が含まれています

私のSessionsControllerには以下が含まれています

したがって、まだロジックはなく、リダイレクトのみです。ブラウザーでアプリケーションを実行し、サインイン ページに移動し、フォーム (/en/sessions に投稿) を送信すると、期待どおりに動作します。/en にリダイレクトされます。

ただし、統合テストはリダイレクトを認識できません

テストは失敗し、メッセージが表示されます

したがって、アプリケーションが正しくリダイレ​​クトしても、RSpec は応答をリダイレクトとして認識しません。

楽しみのために、 create の実装を次のように変更します。

次に、エラーメッセージが表示されます

もちろん、関数が間違った URL にリダイレクトしているため、これは予想されるエラー メッセージです。しかし、new_user_path は RSpec がリダイレクトと見なすリダイレクトになるのに、root_path は RSpec がリダイレクトとして認識しないリダイレクトになるのはなぜですか?

アップデート

コメントに基づいて、ステータスコードを確認するためにテストを修正しました

エラーにつながります

0 投票する
3 に答える
12477 参照

ruby-on-rails-3 - 未定義のメソッド `sign_in' #Devise で RSpec をセットアップしようとするとエラーが発生する

私は持っていspec/controllers/add_to_carts_spec.rbます:

/spec/support/spec_helper.rb:

...これもロードします/spec/support/devise.rb:

Guard はバックグラウンドで実行されており、これをスローし続けます。

ここ数時間、さまざまな構成調整とさまざまな構文を試してみましたが、何も変わっていないようです。何か案は?

(新しいエラーを反映するように編集)

0 投票する
1 に答える
520 参照

xml - Rails 3でrspec2とrubyを使用してコントローラーの正しいXML出力をテストするにはどうすればよいですか?

rspec1にはマッチャーhave_tagがありましたが、これはrspec2にはもうありません。

RoRコントローラーのXML出力を簡単に確認するにはどうすればよいですか?XPathは素晴らしいでしょう...

0 投票する
1 に答える
325 参照

ruby-on-rails - Rspec Ruby on Rails コントローラーの質問

現在、Ruby 1.9.2 と Rails 3 を使用しており、rspec テストの最中です。基本的に、アプリケーションコントローラーの前フィルターによって呼び出される関数があり、サイトのどこかでコントローラーアクションが行われるたびに明らかに実行されます。テスト目的で、別のコントローラーのテストを書いていますが、私のアクションはフィルター関数呼び出しの前に始まりません。rspec テスト内で特定のコントローラーから関数を具体的に呼び出す方法はありますか? 私はコードをオンラインで投稿できないので、それを求めても無駄です:P.
ありがとう

0 投票する
1 に答える
158 参照

ruby-on-rails - rspec-railsでデータベースを実行する

RSpecを使用してコントローラーをテストしようとしていますが、コントローラーの関数にデータベースが必要なため、問題が発生しています。

コントローラのコード行は次のようになります。

MyresourcesはActiveRecord::Baseから継承します

ただし、データベースがないため、ロードするものはなく、@ myallresourcesは空の配列であるため、テストは失敗します。rspecの実行中にデータベースに接続する方法はありますか?

私はRSpecとレールに非常に慣れていないので、どんな助けでも大歓迎です。ありがとう。

0 投票する
2 に答える
1649 参照

ruby-on-rails - Capybara/Capybara Webkit/RSpec click_button と page.select を使用してタイミング/AJAX の問題を軽減するにはどうすればよいですか?

簡単にするために、テストのほとんどを省略し、問題のあるコードのみを含めました。それは:

これを実行すると、次のメッセージが表示されます。

このボタン クリック イベントがトリガーする AJAX 要求は select タグとは関係がないため、テストで順序を逆にすると、テストはパスします。Capybara のデフォルトの待機時間は 2 秒であることを知っているので、次のように 10 に変更しました。

これにより、テストがパスすることはありません。これら 2 つのメソッドを互いにうまく連携させ、ユーザーが Web ページを操作する順序で機能させるにはどうすればよいでしょうか?

(自分の仕様からコードを投稿していれば、これはすぐに解決されたに違いありません。)

0 投票する
1 に答える
496 参照

ruby-on-rails - Factory-girl: 'association' という名前の列が、'association' という名前の Factory メソッドと重複しています

次の Factory 定義があります。

f.association :group, :factory => :group のようなファクトリ定義の「関連付け」メソッドについて知っています。しかし、実際には関連付けという名前の列があります。列に値を割り当てるにはどうすればよいですか?

更新: Maletor の投稿の後、1 つの解決方法が思い浮かびました。Maletor に感謝します。

これをステータスモデルに追加しました

そして今、私はできる

正常に動作します :)

0 投票する
1 に答える
160 参照

ruby-on-rails - コントローラーをテストするために mock_model を使用する際の問題

モデルをテストしようとしていますが、モック モデルの作成に問題があります。

以下はコントローラーの一部です。

これが私のrspecの一部です:

ただし、rspec を実行するとエラーが発生します。

また、これが機能するようになった場合、License オブジェクトの ID を変更するにはどうすればよいですか。「mocks[0].id = 5」は機能しますか?

どんな助けでも大歓迎です。ありがとう。