RSpec let 方法在规范中使用时给出 nil



当我运行此测试时

require 'spec_helper'
describe AssignmentsController do
  let(:user) { create(:user) }
  let(:course) { create(:course) }
  describe "GET 'index'" do
     it "returns http success" do
      assignment = user.assignments.build(name: "Hello 2", start_date: "5/20/2000", due_date: "5/21/2000")
      get :index
      assigns(:assignment).should eq([assignment])
    end
  end
end

我明白这个失败:

  1) AssignmentsController GET 'index' returns http success
     Failure/Error: get :index
     NoMethodError:
       undefined method `assignments' for nil:NilClass
     # ./app/controllers/assignments_controller.rb:5:in `index'
     # ./spec/controllers/assignments_controller_spec.rb:29:in `block (3 levels) in <top (required)>'

为什么会这样,因为我用上面的let定义了用户变量

如果您仔细观察,您会发现错误源自第 5 行的控制器,而不是规范文件。一切都应该很好,让语句的方式很好。

最新更新