I can''t figure out why I am getting an error for one of the tests
below:
=======================describe AccountsController, "POST" do
before :each do
@user = mock_model(User)
@account = mock_model(Account, :id => 1, :valid => true, :save =>
true, :users => mock("users", :build => @user))
Account.should_receive(:new).and_return(@account)
end
def do_post
post "create", {:account => {}, :user => {}}
end
it "should make the relation to the users" do
@account.should_receive(:users).and_return
do_post
end
#this test passes
it "should receive the save method call" do
@account.should_receive(:save).and_return(true)
do_post
end
end
=======================#Controller code
def create
@account = Account.new(params[:account])
@user = @account.users.build(params[:user])
if @account.save
#log the user in to allow them to be directed to their control
panel
self.current_user = User.authenticate(params[:user][:login],
params[:user][:password])
redirect_to admin_account_url(@account)
else
render :action => "new"
end
end
=======================
It is this test that fails
it "should make the relation to the users" do
@account.should_receive(:users).and_return
do_post
end
with the following error:
=======================NoMethodError in ''AccountsController POST should
make the relation to
the users''
You have a nil object when you didn''t expect it!
The error occurred while evaluating nil.build
I thought that:
@account = mock_model(Account, ..., :users => mock("users", :build
=>
@user))
would allow the call to users to stubbed out and pass the test.
What is it that I am missing?
Thanks for the help
--
Posted via http://www.ruby-forum.com/.