2017-01-17 26 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