Jesper Laursen wrote:
> Hello forum
>
> I have there to files
>
> #----- virtual_host_controller.rb
> class VirtualHostsController < ApplicationController
> before_filter :capture_domain
>
> # GET /domain/1/virtual_hosts/1
> def show
> @virtual_host = @domain.virtual_hosts.find(params[:id])
>
> respond_to do |format|
> format.html # show.rhtml
> end
> end
>
> private
>
> def capture_domain
> if params[:domain_id].blank?
> flash[:notice] = 'Need domain.'
> redirect_to domains_url
> else
> @domain = Domain.find(params[:domain_id])
> end
> end
> end
> #----
>
> and
>
>
> #----- virtual_host_controller_spec.rb
> describe VirtualHostsController, "handling GET /domains/1/virtual_hosts/1" do
>
> before do
> @domain = mock_model(Domain)
> @virtual_hosts = mock("virtual_hosts")
> @virtual_host = mock("virtual_host")
> Domain.should_receive(:find).with("1").and_return(@domain)
> @domain.should_receive(:virtual_hosts).and_return(@virtual_hosts)
> @virtual_hosts.should_receive(:find).and_return(@virtual_host)
> login_as :admin
> end
>
> def do_get
> get :show, :id => "1", :domain_id => "1"
> end
>
> it "should render show template" do
> do_get
> response.should render_template('show')
> end
>
> it "should find the virtual_host requested" do
> # @domain.should_receive(:virtual_hosts).and_return(@virtual_hosts)
> @virtual_hosts.should_receive(:find).with('1').and_return(@virtual_host)
> do_get
> end
>
> it "should assign the found virtual_host for the view" do
> do_get
> assigns[:virtual_host].should equal(@virtual_host)
> end
> #-----
>
> I have a problem with these three it should-cases. How can I make them to
> work.
>
> The error is:
> should find the virtual_host requested
> Mock 'virtual_hosts' expected :find with ("1") once, but received it 0 times
>
> The routes are like this:
> map.resources :domains do |domains|
> domains.resources :virtual_hosts
> end
>
> What can I do?
> _______________________________________________
> rspec-users mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
>
Correct me if I am wrong, but in the "before do"
@virtual_hosts.should_receive(:find).and_return(@virtual_host)
should be
VirtualHosts.should_receive(:find).and_return(@virtual_host)
Since you are calling find on the class?
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users