ruby-on-rails - RSpec: 未初始化常量 ActiveRecord (NameError)

标签 ruby-on-rails ruby activerecord rspec

当我从 Rails 项目的根目录运行 rspec 时,出现以下错误:

/Users/ysername/code/fsf/app/models/school_application.rb:3:in `<top (required)>': uninitialized constant ActiveRecord (NameError)

在我的 spec_helper.rb 文件中调用 require_relative 触发

这是我的测试:

require 'spec_helper'

describe '#to_xml' do
  it 'returns the xml-ified version of a payment' do
    expect(SchoolApplication.to_xml(XXXXXXXXXXXXXXXX,10, 400, "bob").to eq("<txn>   <ssl_merchant_id>5</ssl_merchant_id><ssl_user_id>3</ssl_user_id><ssl_test_mode>false</ssl_test_mode><ssl_card_number>2443444433334444</ssl_card_number><ssl_amount>400</ssl_amount><ssl_ssl_cvv2cvc2_indicator>1</ssl_cvv2cvc2_indicator><ssl_first_name>'bob'</ssl_first_name></txn>"))
  end
end

这是我的 spec_helper.rb 文件。

require 'rubygems'
ENV["RAILS_ENV"] ||= 'test'
require_relative("../app/models/school_application") 

仅供引用,当我删除 require_relative 语句时,它不再知道 SchoolApplication 是什么。 不太确定这里发生了什么。我看过其他线程,但我对他们的解决方案/问题如何与我自己的一致感到困惑(例如,在我的/lib/目录中有另一个 Active_Record 副本???)

谢谢!

这是抛出错误的文件,school_application.rb

require 'builder'

class SchoolApplication < ActiveRecord::Base
   def self.to_xml(number,expiration,cvv,amount, name)
     xml = ::Builder::XmlMarkup.new
     xml.txn {
       xml.ssl_merchant_id 5
       xml.ssl_user_id 3
       xml.ssl_ssl_pin 1434
       xml.ssl_test_mode false  
       xml.ssl_card_number number
       xml.ssl_amount amount
       xml.ssl_cvv2cvc2_indicator cvv
       xml.ssl_first_name name
     }
     xml
   end
end

附言不要担心所有的支付凭证都是伪造的。

最佳答案

您的 spec_helper 没有加载 Rails 环境。尝试要求环境:

require 'rubygems'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)

正确设置后,您的模型会自动加载,因此您可以删除 require_relative 行。

如果您安装了 rspec-rails gem,您还可以生成一个新的 spec_helper.rb:

rails generate rspec:install

关于ruby-on-rails - RSpec: 未初始化常量 ActiveRecord (NameError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24764055/

相关文章:

JavaScript、jQuery - 检索下拉列表中的项目名称

ruby-on-rails - 将用户带回到代码的开头

ruby-on-rails - Travis ci、Rails 和 Postgresql - 错误类型 hstore 不存在

ruby-on-rails - 在 2 个 Rails 应用程序之间共享测试数据

ruby-on-rails - 通过关系表 Rails 一对多

activerecord - 如何使用 ruby​​ activerecord 查询选择单列

mysql问题: is there something like IN ALL query?

ruby-on-rails - Rails 使用嵌套表单和回形针 gem 不允许的参数

ruby-on-rails - ActiveRecord .save 返回 true 但不保存?

mysql - 未定义方法 `gsub' 对于 nil :NilClass or how to use gsub method in rails