![](/img/trans.png)
[英]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.