Rails 3の足場で生成されたデフォルトの仕様を拡張しようとRSpecの信じられないほど紛らわしい、少なくとも最初の構文を頭に入れようとしています...関連する(belongs_to)関係のRSpecスタブとモック
非常に単純I関連しているモデル...:
#clown.rb
class Clown < ActiveRecord::Base
has_many :rabbits
end
#rabbit.rb
class Rabbit < ActiveRecord::Base
belongs_to :clown
end
が、私はrabbits_controller.spec.rbとのトラブルを抱えています。というのも、私がクラウンを参照すると、仕様が失敗するということです。 名前ウサギの意見の1つ。愚かなシンプルなアプリは期待どおりに動作しますが、私はウサギから正確に対応するために(または少なくとも私が起こっていると思うことですが)ピエロをスタブしていない(または嘲笑していない)ため、スペックは失敗します。スタブを追加するにはどうすればいいですか(または、ウサギが関連しているかっこを嘲笑していますか?)。
既存:
#rabbits.controller.spec.rb
require 'spec_helper'
describe RabbitsController do
def mock_rabbit(stubs={})
(@mock_rabbit ||= mock_model(Rabbit).as_null_object).tap do |rabbit|
rabbit.stub(stubs) unless stubs.empty?
end
end
describe "GET index" do
it "assigns all rabbits as @rabbits" do
Rabbit.stub(:all) { [mock_rabbit] }
get :index
assigns(:rabbits).should eq([mock_rabbit])
end
end
...
:
あなたはそのようにように、あなたのテストでそれらを使用したいですなぜRails3/RSpecテンプレートに 'mock_rabbit'ブロックがデフォルトとして含まれていますか?私のような人から地獄を混乱させるだけですか?私は実際に知っていることが少ないほどRailsについて学ぶほど多くのことを学んでいます... – Meltemi
私には分かりません:)おそらく彼らは私が知らないいくつかのトリックを持っていますが、宗教的にテストする人としては、私の内部の依存関係のための工場で。しばらくの間、あなたのテストをデータベース接続から独立させることを訴えている人がたくさんいましたが、時間がたつにつれてPITAのようなものになってきて、アプリケーションテストに焦点を当てるよりも、 – karmajunkie