2016-12-10 2 views
0

안녕 얘들 하였다 : 내가 localhost를 실행하면,예상 응답은 <redirect> 수 있지만 나는 다음과 컨트롤러 코드가 <200>

require "rails_helper" 

RSpec.describe FeedbacksController do 

    describe "POST create" do   

    context 'when param[:name] is present' do 
     it 'should redirect to homepage' do 
      @feedback = Feedback.create(:name => "Hah") 
      @feedback.save 
      is_expected.to redirect_to new_feedback_path 
      debugger 
     end 
     end 
    end 
end 

그러나 출력을

class FeedbacksController < ApplicationController 

    def create 
    @feedback = Feedback.create(feedback_params) 

    if @feedback.errors.any? 
     flash[:error] = @feedback.errors 
     render 'new' 
    else 
     redirect_to :back 
    end 

    end 

테스트 사양 정확히 내가 원하는 것이지만 단위 테스트의 경우 통과하지 않고 나를 돌려 주겠다. "예상되는 응답은 < 200>이었습니다."

이유가 무엇인지, 테스트 케이스를 통과해야하는 이유를 알 수 있습니까?

+0

피사체가 무엇 :

이 같은 코드를 찾고? 'PUT create "를 기술하십시오 - PUT은 업데이트 용입니다. –

+1

200 응답을 얻는 방법을 이해하지 못합니다. 귀하의 테스트에서 컨트롤러에 대한 호출이 전혀 표시되지 않습니다. – David

+0

@AlexKojin 나는 그들을 다시 편집했다. 하하는 저에게 그것을 말하고 있습니다. – BC2

답변

1

컨트롤러에 대한 실제 게시물 요청이 누락되었습니다.

이 읽어 보시기 바랍니다 : rspec documentation

그래서이 :

 @feedback = Feedback.create(:name => "Hah") 
     @feedback.save 

가되어서는 안된다. 두 번째 줄은 어쨌든 불필요하며 create는 이미 객체를 저장합니다.

it 'should redirect to homepage' do 
     post feedback_path, params: { name: 'hah' } 
     expect(response).to redirect_to(new_feedback_path) 
    end 
관련 문제