Rspec控制器测试未通过

时间:2017-01-17 05:05:06

标签: ruby-on-rails ruby 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

最后一次测试不起作用,但应该可行。这有什么问题?

2 个答案:

答案 0 :(得分:2)

索引测试是空的......你需要断言要通过的东西。

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

答案 1 :(得分:0)

您的var与控制器不同。使用报告而不是这样的报告:

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

它应该有用。