【发布时间】:2020-08-06 16:24:09
【问题描述】:
我想使用factory_bot_rails创建如下所示的哈希
let(:expected_hash) do
{
'fields' => {
'summary' => 'member added as a collaborator to repository',
'description' => "[OutsideCollaboratorAdded]\n-----------------\nMember: member,\n Added to project: repository,\n by: sender",
'project' => { 'id' => '22501' },
'issuetype' => { 'id' => '11800' },
'customfield_14400' => '2020-04-23'
}
}
end
我们的想法是让这些字段:summary、description、project 和 issue_type 可以使用 trait 进行编辑。所以我试图这样做:
factory :expected_ticket_fields do
fields {{
summary => 'test',
description => 'test desc',
customfield_14400 => '2020-04-23'
}}
trait :member_added do
summary { 'member added as a collaborator to repository' }
description { '[OutsideCollaboratorAdded]\n-----------------\nMember: member,\n Added to project: repository,\n by: sender' }
project {{ 'id' => '22501' }}
end
end
在规格方面:
before do
hash = create(:expected_ticket_fields)
hash.member_added
end
但我收到一个错误:uninitialized constant ExpectedTicketFields
【问题讨论】:
-
您必须使用 OpenStuct 作为工厂的类。
factory :expected_ticket_fields, class: 'OpenStruct' do ...。但恕我直言,这看起来应该由模型处理。 -
哈希的目的是什么?正如 max 所说,它看起来应该是一个模型而不是一个哈希。
-
伙计们,我想通过 factory_bot 创建一个哈希,所以我猜其余的无关紧要。如果您真的想知道它会创建 Jira 票证,并且它是更大级别的一部分。
标签: ruby-on-rails ruby rspec factory-bot