gpt4 book ai didi

ruby-on-rails - Rspec 没有看到我的模型类。未初始化常量错误

转载 作者:行者123 更新时间:2023-11-28 19:38:02 24 4
gpt4 key购买 nike

我在 Rspec 上为我在 Ruby on Rails 应用程序中的模型编写测试。我在启动“rspec spec”时收到此错误

command:
/spec/models/client_spec.rb:4:in `<top (required)>': uninitialized constant Client (NameError)

我使用 Rails 4.0.0 和 Ruby 2.0.0

这是我的 client_spec.rb:

require 'spec_helper'


describe Client do

it 'is invalid without first_name', :focus => true do
client = Client.new
client.should_not be_valid
end
end

和 Gemfile:

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0.rc1'

# Use sqlite3 as the database for Active Record
gem 'sqlite3'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0.rc1'

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'

# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'

# Turbolinks makes following links in your web application faster. Read more:
gem 'turbolinks'

gem 'jbuilder', '~> 1.0.1'

group :development do
gem 'rspec-rails'
end

group :doc do
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', require: false
end

group :test do
gem 'rspec-rails'
gem 'factory_girl_rails'
gem 'database_cleaner'
end

最后是 client.rb(ROR 模型和类):

class Client < ActiveRecord::Base

has_many :cars
has_many :orders
has_one :client_status
has_one :discount_plan, through: :client_status

validates :email, format: { with: /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})\z/, :message => "Only emails allowed", :multiline => true }
validates :email, presence: true, if: "phone.nil?"
#validates :phone, presence: true, if: "email.nil?"
validates :last_name, :first_name, presence: true
validates :last_name, :first_name, length: {
minimum: 2,
maximum: 500,
wrong_length: "Invalid length",
too_long: "%{count} characters is the maximum allowed",
too_short: "must have at least %{count} characters"
}
end

如果它对我的 spec_helper.rb 文件有用:

# This file was generated by the `rspec --init` command. Conventionally, all
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
# Require this file using `require "spec_helper"` to ensure that it is only
# loaded once.
#
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
RSpec.configure do |config|
config.treat_symbols_as_metadata_keys_with_true_values = true
config.run_all_when_everything_filtered = true
config.filter_run :focus

# Run specs in random order to surface order dependencies. If you find an
# order dependency and want to debug it, you can fix the order by providing
# the seed, which is printed after each run.
# --seed 1234
config.order = 'random'

#config.use_transactional_fixtures = false

config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end

config.before(:each) do
DatabaseCleaner.start
end

config.after(:each) do
DatabaseCleaner.clean
end

end

最佳答案

在 rails 4.x 及更高版本中(rspec-rails 3.1.0 及更高版本)将此添加到每个规范文件的顶部:

require "rails_helper"  # this

不是

require "spec_helper"   # not this

关于ruby-on-rails - Rspec 没有看到我的模型类。未初始化常量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com