ソースコードから判断すると、これはデフォルトでは不可能のようです。これにより、いくつかのオプションが残ります。
1.created_at
モデルスタブを作成するたびに値を指定します。
m = stub_model(MyModel, :created_at => Time.now)
2.created_at
スタブの初期化後に属性を設定する独自のヘルパーメソッドを作成します。
module Helpers
def stub_model_with_timestamp(model_class, stubs={})
stub_model(model_class, { :created_at => Time.now }.merge(stubs))
end
end
次に、モジュールをに含めるだけspec_helper.rb
で、すべての仕様で使用できるようになります。
RSpec.configure do |config|
include Helpers
...
end
3.本当にそのまま使用したい場合stub_method
は、モジュールを再度開いて元のメソッドのエイリアスを作成することで、rspec-railsにモンキーパッチを適用して希望どおりに機能させることができます。
module RSpec::Rails::Mocks
def stub_model_with_timestamp(model_class, stubs={})
stub_model_without_timestamp(model_class, { :created_at => Time.now }.merge(stubs))
end
alias_method_chain :stub_model, :timestamp
end
これをファイルに入れるspec/support/
と自動的に読み込まれるため、モデルをスタブすると自動的にcreated_at
タイムスタンプが設定されます。
最後に、これは他の人も使いたいと思うかもしれない便利な機能だと思うので、実際にrspec-railsにプルリクエストを作成して、デフォルト設定を構成オプションとして追加することを検討してください。(もしそうなら、完全を期すために、おそらく同様に設定したいと思うでしょうupdated_at
。)
お役に立てば幸いです。