ruby-on-rails - 在 FactoryGirl 中创建字典作为属性

标签 ruby-on-rails testing rspec factory-bot

Factory Girl 允许做类似的事情:

FactoryGirl define 
  factory :post do
    content  "some content"
    styles   "styles here"
    team     1
  end
end

但是,如果我在工厂 block 中尝试以下操作:

  factory :post do
    content  "some content"
    styles   "styles here"
    team     1
    my_dictionary {'a' => 1, 'b' => 2}
  end

my_dictionary 不会被解释为字典类型。我不知道如何将字典作为 FactoryGirl 中的属性。谁能帮我 ?

最佳答案

您观察到的问题来自 Ruby 中的语法歧义。该语言使用花括号来定义散列(您称之为字典)以及 block (例如,当使用 each 循环时)。由于您现在使用散列作为 my_dictionary 方法的唯一参数,因此解析器不清楚左花括号是被解释为 block 的开头还是散列。在这种情况下,Ruby 默认采用 block 假设。

要强制将解释作为方法参数,您可以像这样使用括号:

my_dictionary({'a' => 1, 'b' => 2})

然后,语句就可以毫无歧义地被解析了。您在这里看到的只是您无法轻易省略方法调用括号的罕见情况之一。

关于ruby-on-rails - 在 FactoryGirl 中创建字典作为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105866/

相关文章:

c# - 使用 C# Moq 模拟 ElasticSearch 客户端

css - 将复选框与标签内联

ruby-on-rails - Ruby 2.0.0 字符串#Match ArgumentError : invalid byte sequence in UTF-8

testing - 如何在 LoadImpact 中处理 CSRF token ?

ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作

ruby-on-rails - Rails Rspec - 未定义的方法 `session'

git - 我可以让 RSpec 只运行更改的规范吗?

ruby-on-rails - 在 HTTparty 中传递 header 和查询参数

ruby-on-rails - 在 Rails 应用程序中编辑 YAML 文件

javascript - 应测试 MERN 堆栈应用程序的哪一部分?