Ruby on Rails Tuesday, June 10, 2014

See this blog
http://everydayrails.com/2012/04/07/testing-series-rspec-controllers.html



On Monday, June 9, 2014 2:59:21 PM UTC-4, Ruby-Forum.com User wrote:
1) Right now this is just testing a successful response. However, since
I've gone and created a Post via FactoryGirl... how can I test the
@post.id equals one of the id's being returned by the get: index json?


    describe Api::V1::PostsController do

  context 'Post' do
    before(:each) do
      @post = FactoryGirl.create(:post)
    end


    context '#index' do
      it "should have a successful response on get index" do
        get :index, format: :json
        response.should be_success
      end
    end

EDIT:

2) How can I use "post :create" when my route is nested.

For example... this works great as an rspec controller post :create with
a top level resource, such as post

      it "should get a success response on post create" do
        post :create, params
        response.should be_success
      end

however, for a nested resource like 'comment' which is nested under
post... the above would throw the following...

    Failure/Error: post :create, params
     ActionController::UrlGenerationError:
       No route matches

and if I tried

          it "should get a success response on post create" do
        post :create, post_id: @post.id, params #@post is defined and
created above
        response.should be_success
      end

I get this odd error...

    syntax error, unexpected '\n', expecting => (SyntaxError)

--
Posted via http://www.ruby-forum.com/.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/ba7cb9e1-a9f2-4494-b801-7ff01fa78560%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment