Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 让用户跟随/学习课程-我的方法错误_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails 让用户跟随/学习课程-我的方法错误

Ruby on rails 让用户跟随/学习课程-我的方法错误,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,当我有一个用户尝试参加/遵循课程时,我收到一个rspec错误。我相信我的方法一定有问题,因为它在rspec测试中返回nil。课程模型和用户模型之间还有一个作业模型。怎么了 错误 1) User taking course Failure/Error: it { should be_taking_course(course)} expected taking_course?(#<Course id: 1, title: "Ze Finance Course 1", descrip

当我有一个用户尝试参加/遵循课程时,我收到一个rspec错误。我相信我的方法一定有问题,因为它在rspec测试中返回nil。课程模型和用户模型之间还有一个作业模型。怎么了

错误

 1) User taking course 
 Failure/Error: it { should be_taking_course(course)}
   expected taking_course?(#<Course id: 1, title: "Ze Finance Course 1", description:     "Description for course 1", typeof: nil, created_at: "2013-06-25 21:38:24", updated_at: "2013-06-25 21:38:24">) to return true, got nil
 # ./spec/models/user_spec.rb:125:in `block (3 levels) in <top (required)>'

it{should…}
是速记
it{subject.should…}
但是您没有设置
@用户
而不是
主题
。因此RSpec将创建一个隐式的
主题
,它只是
User.new

您可以通过设置显式的
主题来修复测试,方法与设置
@user
的方法大致相同:

describe "taking course" do

  let(:course) {FactoryGirl.create(:course)}
  subject { User.create(@attr) }
  before do
    subject.take_course!(course)
  end

  it { should be_taking_course(course) }

end
如果您不想这样做,请使您的断言更加明确:

  it { @user.should be_taking_course(course) }
describe "taking course" do

  let(:course) {FactoryGirl.create(:course)}
  subject { User.create(@attr) }
  before do
    subject.take_course!(course)
  end

  it { should be_taking_course(course) }

end
  it { @user.should be_taking_course(course) }