2017-01-17 238 views
0

我的控制器和測試文件如下。Rspec控制器測試未通過

控制器/ reports_controller.rb:

def index 
    @reports = Report.all 
    end 

規格/控制器/ reports_controller_spec.rb:

RSpec.describe ReportsController, type: :controller do 
    let(:test_report) { 
    2.times.map { 
     create(:report, student: create(:student), report_options_attributes: [ 
     {option: create(:option), note: "ole" } 
     ]) 
    } 
    } 

    describe "GET #index" do 
    before(:each) do 
     get :index 
    end 

    it "should be success" do 
     expect(response).to be_success 
    end 

    it "should render index template" do 
     expect(response).to render_template(:index) 
    end 

    it "should load all reports" do 
     expect(assigns(:report)).to match_array test_report 
    end 
    end 

最後一次測試是不工作的,但它應該工作。它有什麼問題?

回答

0

您的var與控制器不同。使用報告而不是像這樣的報告:

it "should load all reports" do 
     expect(assigns(:reports)).to match_array test_report 
    end 

它應該工作。

+0

是的,工作。謝謝 – Thatsthati

2

索引測試是空的..你需要斷言某些東西通過。

可以在索引函數中添加.. assert_response :success

+0

前兩個測試通過。只是最後一個不是。 – Thatsthati