RSpec自分自身で... RSpec 2に関する完全なドキュメントはありませんか?少なくとも私が見つけることができたものはありませんでした...RSpec 2の生成仕様の理解
とにかく、私は、RSpecを統合するには微妙な試みの中で、Rails 3のスキャフォールドジェネレータで作成された29のスペックを調べて始めました。私を逃れる。誰かが助けてくれることを願っています(あるいは、まともなRSpec 2のドキュメントを教えてください)。
たとえば、以下の最初のコードブロック(def mock_clown..
。)では、mock_clownがテスト用のClownクラスのモックを作成していると仮定できます。しかし、正確に何が起こっているのですか?この「モック」は何を生成していますか? .as_null_object
と.tap
の意味は?私は中に私が遭遇したすべてのドキュメントやチュートリアルをこのブロックを比較する例を見つけることができないので、これは非常に混乱して...
#clowns_controller_spec.rb
require 'spec_helper'
describe ClownsController do
def mock_clown(stubs={})
(@mock_clown ||= mock_model(Clown).as_null_object).tap do |clown|
clown.stub(stubs) unless stubs.empty?
end
end
describe "GET index" do
it "assigns all clowns as @clowns" do
Clown.stub(:all) { [mock_clown] }
get :index
assigns(:clowns).should eq([mock_clown])
end
end
...
describe "POST create" do
...
describe "with invalid params" do
it "assigns a newly created but unsaved clown as @clown" do
Clown.stub(:new).with({'these' => 'params'}) { mock_clown(:save => false) }
post :create, :clown => {'these' => 'params'}
assigns(:clown).should be(mock_clown)
end
it "re-renders the 'new' template" do
Clown.stub(:new) { mock_clown(:save => false) }
post :create, :clown => {}
response.should render_template("new")
end
end
...
end