3

rSpec のコントローラー API でのテストに大きな問題があります。現在、ミドルウェア認証ソリューション ( Warden ) を使用しています。仕様を実行すると、ミドルウェアによって追加されたプロキシが存在せず、すべての認証テストでNilPointerExceptions がスローされます。

rSpec は最終的なアプリに意図的にミドルウェアを追加していないようです。それを実現するために rSpec にモンキー パッチを適用する方法があるかどうかを知りたいです。

キュウリで全体をテストしましたが、これは古い認証バージョンのリファクタリングであり、機能するために認証ロジックに依存するいくつかのコントローラー テストがあります。

前もって感謝します。

4

2 に答える 2

3

Rails 2.x の rSpec Controller API は、実際にはコントローラー呼び出しで Rack を使用していないようです。そのため、これを行うことはできません。ただし、David Chelimsky によって指摘された (証明されていない) 解決策があります。彼がくれた答えを rSpec-user メーリング リストに載せます。

コントローラーの仕様はレール 2 のラックを通過しないため、実際にはそうではありません。

Rails 統合テスト API をラップする統合仕様があるため、Rails 統合テストで実行できることは何でも実行できます。ファイルを spec/integration に移動し、リクエストを "get :index" から "get 'path/to/index'" に変換するだけで、かなりうまくいくはずです。

それがどのように機能するか教えてください。

乾杯、デビッド

認証ロジックメソッドで ApplicationController をモックして、仕様を実行するためにダミーのことを行いました。David から提案を指摘される前にこれを行ったので、それが機能するかどうかはわかりません。いずれにせよ、同じ状況にある他の開発者に役立つことを願っています。

于 2010-02-11T18:36:15.000 に答える
0

関連する問題に関するこの投稿は、いくつかの光を当て、最終的には rSpec 構成でミドルウェア コンポーネントを指定するための解決策につながる可能性があります (願っています!)

https://rspec.lighthouseapp.com/projects/5645/tickets/963-request-is-nil#ticket-963-14

特定のRails2の問題には実際には役立ちませんが、このクエリは「rspecミドルウェア」のトップに出てきたので、Rails3ベータ以降を試すときに問題に遭遇した他の人に役立つことを願っています.

于 2010-04-01T01:20:00.070 に答える