[英]RSpec factories with FactoryBot 'uninitialized constant 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.