0

rspec-fireを使用して、アクティブなレコード ファインダーをモックしています。

user_class = fire_class_double('User').as_replaced_constant
user_class.should_receive(:find_by_email).with(email).and_return(user)

これを実行すると、rspec-fire は User クラスが find_by_email を実装していないと文句を言います。

readmeには、FireDouble をサブクラス化することで、クラス メソッドを 2 倍にすることができると書かれています。ただし、これを行う方法がわかりません。さらに、FireDouble クラスはすでにFireDoublableモジュールに置き換えられているようです。

何か案は?

4

1 に答える 1

0

AR ファインダーは実際には通常の方法でメソッドとして定義されていないため、これを直接行うことはできません。列アクセサーについても同じです。これを有効にする最も簡単な方法は、使用するメソッドを明示的に定義することです。

class User < ActiveRecord::Base
  def self.find_by_email(*args); super; end
end

余談ですが、AR ファインダーは廃止されました。

于 2013-05-31T03:08:45.507 に答える