Tha*_*tta 4 ruby activerecord rspec ruby-on-rails
当我rspec从rails项目的根目录运行时,出现以下错误:
/Users/ysername/code/fsf/app/models/school_application.rb:3:in `<top (required)>': uninitialized constant ActiveRecord (NameError)
Run Code Online (Sandbox Code Playgroud)
这是由require_relative我spec_helper.rb文件中的调用触发的
这是我的测试:
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
Run Code Online (Sandbox Code Playgroud)
这是我的spec_helper.rb档案。
require 'rubygems'
ENV["RAILS_ENV"] ||= 'test'
require_relative("../app/models/school_application")
Run Code Online (Sandbox Code Playgroud)
仅供参考,当我删除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
Run Code Online (Sandbox Code Playgroud)
PS不必担心所有付款凭证都是伪造的。
您的spec_helper没有加载Rails环境。尝试要求环境:
require 'rubygems'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
Run Code Online (Sandbox Code Playgroud)
正确设置后,将自动加载模型,因此您可以删除require_relative线。
如果安装了rspec-rails gem,也可以生成一个新的spec_helper.rb:
rails generate rspec:install
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6754 次 |
| 最近记录: |