That makes a-lot of sense. That &#39;new&#39; word threw me off.<br><br>My create method is slightly more complex and I&#39;m not sure how to spec it.<br><br>&nbsp; def create<br>&nbsp;&nbsp;&nbsp; @user = User.find(params[:user_id]) <br>&nbsp;&nbsp;&nbsp; @ticket = @
user.tickets.build(params[:ticket])<br>&nbsp;&nbsp;&nbsp; if @ticket.save<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; redirect_to tickets_path<br>&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; render new_usr_ticket_path(params[:user_id])<br>&nbsp;&nbsp;&nbsp; end<br>&nbsp; end<br><br><br>Would I need two mock_models? <br>
<br><div><span class="gmail_quote">On 8/17/07, <b class="gmail_sendername">rupert</b> &lt;<a href="mailto:rupert_apsc@rupespad.com">rupert_apsc@rupespad.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div style="">what&#39;s in the create method of the controller?? you&#39;ve only given the contents of the new method - and without knowing what you want it to do it&#39;s hard to know what will work.<div><br></div><div>
Assuming it&#39;s the normal</div><div><br></div><div>def create</div><div>&nbsp;@ticket = Ticket.new(params(:ticket])</div><div>&nbsp; if @ticket.save</div><div>&nbsp; &nbsp;....etc etc</div><div>end</div><div><br></div><div>then something like the following should work:
</div><span class="q"><div><br></div><div>describe TicketsController, &quot;handling POST /tickets&quot; do</div><div>&nbsp; before do</div></span><div>&nbsp; &nbsp; @ticket = mock_model(Ticket, :save =&gt; true)</div><span class="q"><div>
&nbsp;&nbsp; &nbsp;Ticket.stub!(:new).and_return(@ticket)</div><div>&nbsp; &nbsp; @params = {}</div><div>&nbsp; end</div><div>&nbsp; </div><div>&nbsp; def do_post</div><div>&nbsp; &nbsp; post :create, :ticket =&gt; @params</div><div>&nbsp; end</div><div><br></div><div>&nbsp; it &quot;should create a new ticket&quot; do
</div><div>&nbsp;&nbsp; &nbsp;ticket.should_receive(:new).with(@params).and_return(@ticket)</div></span><div>&nbsp; &nbsp; do_post</div><div>&nbsp; end</div><div>&nbsp; </div><div>&nbsp; it &quot;should assign the ticket for the view&quot; do</div><div>&nbsp; &nbsp; do_post
</div><div>&nbsp; &nbsp; assigns[:ticket].should equal(@ticket)</div><div>&nbsp; end</div><div>&nbsp; </div><div>&nbsp; it &quot;should save the new ticket&quot; do</div><div>&nbsp; &nbsp; @ticket.should_receive(:save).with().and_return(true)</div><div>&nbsp; &nbsp; do_post
</div><div>&nbsp; end</div><div>end<div><span class="e" id="q_11476255482862ee_5"><div><div><br></div><br><div><div>On 18 Aug 2007, at 00:11, Andrew WC Brown wrote:</div><br><blockquote type="cite">I replaced:<br><br>@ticket.should_receive
(:new).with(@params).and_return(@ticket)<br><br>with<br><br>Ticket.should_receive(:new).with(@params).and_return(@ticket)<br><br>Similar Error<br><br>1)<br>Spec::Mocks::MockExpectationError in &#39;TicketsController handling POST /tickets should create a new ticket&#39; 
<br>Mock &#39;Class&#39; expected :new with ({}) once, but received it 0 times<br>./spec/controllers/tickets_controller_spec.rb:16:<br><br>If I omit @params = {} then I get the error as following<br><br>1)<br>Spec::Mocks::MockExpectationError in &#39;TicketsController handling POST /tickets should create a new ticket&#39; 
<br>Mock &#39;Class&#39; expected :new with (any args) once, but received it 0 times<br>./spec/controllers/tickets_controller_spec.rb:16:<br><br>So its not receiving the new method at all even though I clearly called it.<br>
 Could it be possible that the issue is with the actual Ticket model itself?<br><br><div><span class="gmail_quote">On 8/17/07, <b class="gmail_sendername">David Chelimsky</b> &lt;<a href="mailto:dchelimsky@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
dchelimsky@gmail.com </a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On 8/17/07, Andrew WC Brown &lt;<a href="mailto:omen.king@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
omen.king@gmail.com </a>&gt; wrote:<br>&gt; I&#39;ve been off the rspec for a few months and I&#39;m trying to get back on it.<br>&gt;<br>&gt; 1)<br>&gt;&nbsp;&nbsp;Spec::Mocks::MockExpectationError in &#39;TicketsController<br>&gt; handling POST /tickets should create a new ticket&#39; 
<br>&gt;&nbsp;&nbsp;Mock &#39;Ticket_1001&#39; expected :new with ({}) once, but received it 0 times<br>&gt;&nbsp;&nbsp;./spec/controllers/tickets_controller_spec.rb:16:<br>&gt;&nbsp;&nbsp;script/spec:4:<br>&gt;<br>&gt; class TicketsController &lt; ApplicationController 
<br>&gt;<br>&gt;&nbsp;&nbsp; def new<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Ticket.new<br>&gt;&nbsp;&nbsp; end<br>&gt;<br>&gt; end<br>&gt;<br>&gt; describe TicketsController, &quot;handling POST /tickets&quot; do<br>&gt;<br>&gt;&nbsp;&nbsp; before do<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; @ticket = mock_model(Ticket, :to_param =&gt; &#39;1&#39;, :save =&gt; true) 
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; Ticket.stub!(:new).and_return(@ticket)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; @params = {}<br>&gt;&nbsp;&nbsp; end<br>&gt;<br>&gt;&nbsp;&nbsp; def do_post<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; post :create, :ticket =&gt; @params<br>&gt;&nbsp;&nbsp; end<br>&gt;<br>&gt;&nbsp;&nbsp; it &quot;should create a new ticket&quot; do 
<br>&gt;<br>&gt; @ticket.should_receive(:new).with(@params).and_return(@ticket)<br><br>This is telling the ticket object to expect new, but it&#39;s the Ticket<br>class that will receive it:<br><br>Ticket.should_receive(:new).with(@params).and_return(@ticket) 
<br><br>That should do it.<br><br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; do_post<br>&gt;&nbsp;&nbsp; end<br>&gt;<br>&gt; end<br>&gt;<br>&gt; Would someone provide with an explanation what I have to do to make this<br>&gt; spec pass?<br>&gt; Peepcode hasn&#39;t released their screen cast on rspecing controllers yet =&#39;( 
<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; _______________________________________________<br>&gt; rspec-users mailing list<br>&gt; <a href="mailto:rspec-users@rubyforge.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
rspec-users@rubyforge.org</a><br>&gt; <a href="http://rubyforge.org/mailman/listinfo/rspec-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> http://rubyforge.org/mailman/listinfo/rspec-users</a>
<br>&gt;<br>_______________________________________________<br>rspec-users mailing list<br><a href="mailto:rspec-users@rubyforge.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">rspec-users@rubyforge.org
</a><br><a href="http://rubyforge.org/mailman/listinfo/rspec-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"> http://rubyforge.org/mailman/listinfo/rspec-users</a><br></blockquote></div><br><br clear="all">
<br>-- <br>Monsterbox Productions<br>putting small businesses on-line<br><br>1319 Victoria Avenue East<br>Thunder Bay, Ontario P7C 1C3 <br>Canada<br><br>Andrew WC Brown<br>web-developer and owner<br><a href="mailto:andrew@monsterboxpro.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
andrew@monsterboxpro.com</a><br>P: 807-626-9009<br>F: 807-624-2705<div style="margin: 0px;">_______________________________________________</div><div style="margin: 0px;">rspec-users mailing list</div><div style="margin: 0px;">
<a href="mailto:rspec-users@rubyforge.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">rspec-users@rubyforge.org</a></div><div style="margin: 0px;"><a href="http://rubyforge.org/mailman/listinfo/rspec-users" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://rubyforge.org/mailman/listinfo/rspec-users</a></div> </blockquote></div><br></div></span></div></div></div><br>_______________________________________________<br>rspec-users mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rspec-users@rubyforge.org">
rspec-users@rubyforge.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://rubyforge.org/mailman/listinfo/rspec-users" target="_blank">http://rubyforge.org/mailman/listinfo/rspec-users</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>Monsterbox Productions<br>putting small businesses on-line<br><br>1319 Victoria Avenue East<br>Thunder Bay, Ontario P7C 1C3<br>Canada<br><br>Andrew WC Brown<br>web-developer and owner
<br><a href="mailto:andrew@monsterboxpro.com">andrew@monsterboxpro.com</a><br>P: 807-626-9009<br>F: 807-624-2705