$ command line ruby cheat sheets
Cheat Sheet Title: [ no_spaces_alphanumeric_only ]
Cheat Sheet:INSTALL ======= INSTALL rspec ============= $ sudo gem install rspec OR $ ./script/plugin install git://github.com/dchelimsky/rspec.git INSTALL rspec_on_rails plugin ============================= $ ./script/plugin install git://github.com/dchelimsky/rspec-rails.git BOOTSTRAP THE APP ================= $ ./script/generate rspec create spec create spec/spec_helper.rb create spec/spec.opts create previous_failures.txt create script/spec_server create script/spec HOW TO USE ========== COMMAND LINE ============= spec --color --format specdoc user.rspec RAILS ============= ./script/generate rspec_model User module UserSpecHelper def valid_user_attributes { :email => "joe@bloggs.com", :username => "joebloggs", :password => "abcdefg"} end end describe "A User (in general)" do include UserSpecHelper before(:each) do @user = User.new end it "should be invalid without a username" do @user.attributes = valid_user_attributes.except(:username) @user.should_not be_valid @user.errors.on(:username).should_equal "is required" @user.should have(1).error_on(:username) @user.username = "someusername" @user.should be_valid end end SHOULDA COULDA WOULDA ===================== target.should satisfy {|arg| ...} target.should_not satisfy {|arg| ...} target.should equal <value> target.should not_equal <value> target.should be_close <value>, <tolerance> target.should_not be_close <value>, <tolerance> target.should be <value> target.should_not be <value> target.should predicate [optional args] target.should be_predicate [optional args] target.should_not predicate [optional args] target.should_not be_predicate [optional args] target.should be < 6 target.should == 5 target.should_not == 'Samantha' target.should match <regex> target.should_not match <regex> target.should be_an_instance_of <class> target.should_not be_an_instance_of <class> target.should be_a_kind_of <class> target.should_not be_a_kind_of <class> target.should respond_to <symbol> target.should_not respond_to <symbol> *OLD:* proc.should raise <exception> proc.should_not raise <exception> *NEW:* lambda {a_call}.should raise_error lambda {a_call}.should raise_error(<exception>) lambda {a_call}.should_not raise_error lambda {a_call}.should_not raise_error(<exception>) proc.should throw <symbol> proc.should_not throw <symbol> target.should include <object> target.should_not include <object> target.should have(<number>).things target.should have_at_least(<number>).things target.should have_at_most(<number>).things target.should have(<number>).errors_on(:field) proc { thing.approve! }.should change(thing, :status). from(Status::AWAITING_APPROVAL). to(Status::APPROVED) proc { thing.destroy }.should change(Thing, :count).by(-1) Mocks and Stubs =============== user_mock = mock "User" user_mock.should_receive(:authenticate).with("password").and_return(true) user_mock.should_receive(:coffee).exactly(3).times.and_return(:americano) user_mock.should_receive(:coffee).exactly(5).times.and_raise(NotEnoughCoffeeException) people_stub = mock "people" people_stub.stub!(:each).and_yield(mock_user) people_stub.stub!(:bad_method).and_raise(RuntimeError) user_stub = mock_model("User", :id => 23, :username => "pat", :email => "pat@example.com") Examples (in the real world) ============================ http://madhatted.com/2008/7/10/rspec-real-world-testing
Your cheat sheet will be editable (fixable) by anyone. Each cheat sheet is essentially a wiki page. It may also be used by millions of people for reference purposes from the comfort of their command line. If this is okay with you, please save.
Advertisement