On 2008-10-13, at 17:14, O. Frabjous-Dey wrote:
I thought some more about the issue and I think I'm approaching the problem the wrong way to begin with. As I understand it, part of the philosophy of RSpec is that using mocks and stubs when testing controllers and views instead of touching the database helps to keep each test context self-contained. So I really ought to be checking to see if Membership.create or or Membership.new is being called instead of examining the model object's relationships themselves - not that I can anyway, since it's a mock model.

Can anyone confirm if that sounds right? If so, what method should I be using? #should_receive? Thanks again in advance.

Hi O. You're correct about using mocks and stubs to prevent hitting the database. More importantly though, they allow you to test discrete pieces of code without depending on the state of its surrounding code.

To spec the 'create' action, just go through it one "step" at a time. Eg:

describe "create" do
  before :each do
    @group = mock_model Group, :save => true
    # somehow spec the assignment to flash[:notice]
    Membership.stub! :create
  end

  it "should create a new group"
  it "should respond to ..."
  it "should save the group"
  it "should assign the flash message"
  it "should create a new Membership"
  etc...
end

That doesn't seem complete. What'd I miss?  =P

Cheers,
Nick
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to