gpt4 book ai didi

ruby-on-rails - 如何覆盖类初始化方法并使用 FactoryBot?

转载 作者:行者123 更新时间:2023-12-04 03:02:15 28 4
gpt4 key购买 nike

我在 Rails 上使用 FactoryBot 和 Rspec。

我有一个 具体关键字 我扩展了 inittialize 的 ruby​​ 类方法:

def initialize(args)
super(args)
# Init regexp field immediatly when creating keyword
self.regexp = make_regexp(args[:specificity])
end

在我的 Rspec 测试中,我尝试将其称为: @kw_ex = create(:specific_keyword, name: 'Test Keyword') .

但我得到了这个堆栈跟踪:
 ArgumentError:
wrong number of arguments (0 for 1)
# ./app/models/specific_keyword.rb:19:in `initialize'

看起来当使用 FactoryBot 实例化一个特定关键字时,没有参数传递给 init 方法。这是一种理想的行为,如果是,我应该如何继续使用 FactoryBot 进行测试?当我只做 SpecificKeyword.new(name:'Test') 时它确实有效.

如果我不覆盖 initialize方法,确实有效。

最佳答案

FactoryBot支持自定义初始值设定项看起来与您的情况完全一样:

FactoryBot.define do
factory :specific_keyword do
transient do
name { 'some default' }
end

initialize_with { new(attributes.merge(name: name)) }
end
end

https://robots.thoughtbot.com/factory-girl-2-5-gets-custom-constructors

关于ruby-on-rails - 如何覆盖类初始化方法并使用 FactoryBot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48186188/

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