I'm setting the status code on a controller action but rspec doesn't seem to be catching it in my spec. It works in the browser.
This is the controller method, called via xhr with header Accept: 'application/json' def validate account = Account.new(:login => params[:login]) account.valid? unless (errors = account.errors['login']) url = ['http:','', request.host, params[:login]].join('/') respond_to do |format| format.json { render :json => { :url => url } } end else url = ['http:','', request.host].join('/') respond_to do |format| format.json { render :json => {:errors => errors, :url => url }, :status => 409} end end end And the spec; describe "with errors on login" do before do @account.stub!(:errors).and_return( { "password_confirmation"=>["can't be blank"], "login"=>["is too short (minimum is 3 characters)", "use only letters, numbers, and .-_@ please."], "password"=>["can't be blank", "is too short (minimum is 6 characters)"], "email"=>["can't be blank", "is too short (minimum is 6 characters)", "should look like an email address."] } ) request.env["HTTP_HOST"] = "myhost" controller.use_rails_error_handling! end it "should return conflict 409" do do_post response.response_code.should == 409 end it "should only return the login errors & the url" do expected_json = { "login" => ["is too short (minimum is 3 characters)", "use only letters, numbers, and .-_@ please."], 'url' => 'myhost/mylogin' }.to_json @format.should_receive(:json).and_return(expected_json) do_post end end Any ideas? _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users