【问题标题】:RSpec can't load my non ActiveModel model classesRSpec 无法加载我的非 ActiveModel 模型类
【发布时间】:2020-12-27 00:39:06
【问题描述】:

我是在 Rails 应用程序中使用 RSpec 的新手,我无法让 RSpec 看到我的模型 :(

我在Gemfile 中添加了以下几行

group :development, :test do
  gem 'rspec-rails'
end

并安装它

rails generate rspec::install

然后我在app/models/ 目录中创建了一个facebook_page.rb 文件,它不是 ActiveModel

class FacebookPage
  class << self
    # define class variables
    attr_accessor :app_id
    attr_accessor :app_secret
  end
end

现在我正在尝试对其进行测试,所以我在spec/models/ 目录中添加了一个facebook_page_spec.rb

describe FacebookPage do
  describe ".app_id" do
    it "should return the FB_APP_ID environment variable and thus not be null" do
      FacebookPage.app_id.should_not be_empty 
    end
  end
end

但是当我运行时

bundle exec rake spec

我收到以下错误:

/home/geoffroy/.rvm/rubies/ruby-1.9.3-p194/bin/ruby -S rspec ./spec/models/facebook_page_spec.rb
/home/geoffroy/dev/mybandpage/spec/models/facebook_page_spec.rb:1:in `<top (required)>': uninitialized constant FacebookPage (NameError)

RSpec 似乎没有加载我的模型文件。 是因为它不是 ActiveRecord 的子类吗? 我该如何解决?

非常感谢,最好的

杰弗里

【问题讨论】:

    标签: rspec rspec-rails


    【解决方案1】:

    您在rails generate rspec::install(双冒号)中有错字,请尝试使用rails generate rspec:install。还可以尝试使用以下命令 bundle exec rspec spec 运行测试。

    你的测试中有require "spec_helper"吗?

    ps。这段代码是错误的:

    class FacebookPage
      class << self
        # define class variables
        attr_accessor :app_id
        attr_accessor :app_secret
      end
    end
    

    基本上在这个例子中你是在单例类上定义实例变量,尝试使用这种方法:http://apidock.com/rails/Class/cattr_accessor

    【讨论】:

    • 嘿!你非常有帮助,非常感谢,我错过了 require "spec_helper"。我会马上去看猫的!!
    【解决方案2】:

    对我来说,规范开头不包括 require 'rails_helper'

    【讨论】:

      猜你喜欢
      • 2021-08-27
      • 1970-01-01
      • 2013-03-01
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多