テスト駆動開発を使用してコードを拡張する目的で、既に作成したコードのテストをいくつか作成しようとしています。
インデックス アクションが「user_info」メソッドを呼び出すコントローラーがあります。このメソッドは、ソーサリーの current_user 変数に依存するいくつかのインスタンス変数を収集するだけです。例えば:
def user_info
@current_A = current_user.a
@current_B = current_user.b
end
def index
user_info
// rest of the method goes here
end
このコード ベースをテストする感覚をつかむために、rspec を使用していくつかのテストを書き始めました。私のコントローラーの仕様は非常に基本的で、次のようになります。
describe MyController do
describe "GET 'index'" do
get 'index'
response.should be_success
end
end
ただし、この仕様を実行しようとすると、次のエラーが発生します: NoMethodError: undefined method 'a' for false:FalseClass
まず第一に、仕様に Sorcery メソッドの current_user を認識させるにはどうすればよいですか? そして、好奇心から、current_user が FalseClass のインスタンスとしてフラグ付けされているのはなぜですか? Sorcery メソッドを呼び出していない場合 (そして、コード内の他の場所で current_user を定義していない場合)、nil として表示されるべきではありませんか?