首页 > 解决方案 > 使用 Rails 中的 RSpec 测试控制器中的实例变量

问题描述

嗨,我对 rspec 如何在控制器中调用测试实例变量有点困惑,所以在控制器中我有

class CoursesController < ApplicationController
  def index
    @courses = Course.all
  end

在 rspec 我有

describe CoursesController, :type => :controller do
  it 'assigns correct variable' do
    @fake_result = [double('movie')]
    expect(@fake_result).to eq(@fake_result)
    Course.stub(:all).and_return(@fake_result)
    get :index
    expect assigns(:courses).to eq(@fake_result)
  end
end

我收到错误消息,例如

undefined method `>=' for #<RSpec::Matchers::BuiltIn::Eq:0x00007ff7086b4d18>

似乎在 callassigns(:courses)中,:course不是指动作索引中的实例变量,而是指字符串“course”,我在这里做错了什么。

任何帮助将不胜感激

标签: ruby-on-railsruby-on-rails-4rspec-railsrspec3

解决方案


推荐阅读