簡體   English   中英

RSpec:未初始化的常量ActiveRecord(NameError)

[英]RSpec: uninitialized constant ActiveRecord (NameError)

當我從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 / dir中有另一個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

PS不擔心所有的付款憑證都是偽造的。

您的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM