簡體   English   中英

在Rspec和FactoryBot期間錯誤未定義的常量和凍結的數組

[英]Error undefined constant and frozen Array during Rspec and FactoryBot

我在Rspec期間遇到錯誤。 當我運行rspec時,發生以下錯誤。

我在這里看到了一些問題和答案,但沒有一個對我有幫助。 其中之一包括將Factory Bot降級到4.10,然后運行rubocop修改常數,同時升級到5.0。

我不知道發生了什么。 我在這里想念什么?

NoMethodError:

undefined method 'container_size_cd' in 'container_weight_limit' factory
# ./spec/factories/container_weight_limit.rb:5:in `block (2 levels) in 
<top (required)>'
# ./spec/factories/container_weight_limit.rb:4:in `block in <top 
(required)>'
# ./spec/factories/container_weight_limit.rb:3:in `<top (required)>'
# ./config/environment.rb:5:in `<top (required)>'
# ./spec/rails_helper.rb:3:in `require'
# ./spec/rails_helper.rb:3:in `<top (required)>'
# ./spec/models/container_weight_limit_spec.rb:3:in `require'
# ./spec/models/container_weight_limit_spec.rb:3:in `<top (required)>'



An error occurred while loading 
./spec/models/logistic_process_cost_per_product_spec.rb.
Failure/Error: require File.expand_path('../../config/environment', 
__FILE__)

FrozenError:
 can't modify frozen Array
# ./config/environment.rb:5:in `<top (required)>'
# ./spec/rails_helper.rb:3:in `<top (required)>'
# ./spec/models/logistic_process_cost_per_product_spec.rb:3:in 
`<top          
(required)>'

 An error occurred while loading         
 ./spec/models/logistic_process_cost_spec.rb.
 Failure/Error: require 
 File.expand_path('../../config/environment', 
 __FILE__)

 FrozenError:
 can't modify frozen Array
 # ./config/environment.rb:5:in `<top (required)>'
 # ./spec/rails_helper.rb:3:in `<top (required)>'
 # ./spec/models/logistic_process_cost_spec.rb:3:in `<top 
 (required)>'

 An error occurred while loading 
 ./spec/models/product_freight_spec.rb.
 Failure/Error: require 
 File.expand_path('../../config/environment', 
 __FILE__)

 FrozenError:
 can't modify frozen Array
 # ./config/environment.rb:5:in `<top (required)>'
 # ./spec/rails_helper.rb:3:in `<top (required)>'
 # ./spec/models/product_freight_spec.rb:3:in `<top (required)>'

 An error occurred while loading ./spec/models/product_spec.rb.
 Failure/Error: require 
 File.expand_path('../../config/environment', 
 __FILE__)

 FrozenError:
 can't modify frozen Array
 # ./config/environment.rb:5:in `<top (required)>'
 # ./spec/rails_helper.rb:3:in `<top (required)>'
 # ./spec/models/product_spec.rb:3:in `<top (required)>'

 An error occurred while loading ./spec/models/user_spec.rb.
 Failure/Error: require 
 File.expand_path('../../config/environment', 
 __FILE__)

 FrozenError:
 can't modify frozen Array
 # ./config/environment.rb:5:in `<top (required)>'
 # ./spec/rails_helper.rb:3:in `<top (required)>'
 # ./spec/models/user_spec.rb:3:in `<top (required)>'

 An error occurred while loading 
 ./spec/services/karavel_currency_service_spec.rb.
Failure/Error: require File.expand_path('../../config/environment', 
__FILE__)

FrozenError:
can't modify frozen Array
# ./config/environment.rb:5:in `<top (required)>'
# ./spec/rails_helper.rb:3:in `<top (required)>'
# ./spec/services/karavel_currency_service_spec.rb:3:in `<top (required)>'
No examples found.

Finished in 0.00035 seconds (files took 7.28 seconds to load)
0 examples, 0 failures, 7 errors occurred outside of examples

/spec/factories/container_weight_limit.rb

# frozen_string_literal: true

FactoryBot.define do
 factory :container_weight_limit do
   container_size_cd 0
   bulk 22
   bag_25kg 25
   bag_50kg 25
   bigbag_900kg 26
   bigbag_1100kg 26
 end
end

config / environment.rb

 # Load the Rails application.
 require_relative 'application'

 # Initialize the Rails application.
 Rails.application.initialize!

 ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  html_tag.html_safe
 end

編輯之前,您已經:

An error occurred while loading 
./spec/models/container_weight_limit_spec.rb.

Failure/Error:
 Factory.define do
  factory :offer do
   code { '003433' }
   product_id
   user_id
   crop  { '2020/06' }
   volume_unit { :ton }
   volume { 100 }
   weight_limit { 28 }
   price_unit { 400 }

通過使用FactoryBot而不是Factory ,例如:

An error occurred while loading 
./spec/models/container_weight_limit_spec.rb.

Failure/Error:
 FactoryBot.define do
  factory :offer do
   code { '003433' }
   product_id
   user_id
   crop  { '2020/06' }
   volume_unit { :ton }
   volume { 100 }
   weight_limit { 28 }
   price_unit { 400 }

然后,您將:

/spec/factories/container_weight_limit.rb

# frozen_string_literal: true

FactoryBot.define do
 factory :container_weight_limit do
   container_size_cd 0
   bulk 22
   bag_25kg 25
   bag_50kg 25
   bigbag_900kg 26
   bigbag_1100kg 26
 end
end

應該是:

/spec/factories/container_weight_limit.rb

# frozen_string_literal: true

FactoryBot.define do
  factory :container_weight_limit do
    container_size_cd  {0}
    bulk               {22}
    bag_25kg           {25}
    bag_50kg           {25}
    bigbag_900kg       {26}
    bigbag_1100kg      {26}
  end
end

暫無
暫無

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

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