问题标签 [factory-bot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2434 浏览

ruby-on-rails - 在 Rails 中将灯具转换为 Factory Girl

我想将我的固定装置迁移到 Rails 中的“Factory Girl”。

有什么简单的方法可以转换 factory.rb 文件中的所有 yml 文件吗?

0 投票
11 回答
46978 浏览

ruby-on-rails - 如何在工厂女孩中创建 has_and_belongs_to_many 关联

鉴于以下

您如何为公司和用户定义工厂,包括双向关联?这是我的尝试

现在我试试

也许不出所料,这会导致无限循环,因为工厂递归地使用彼此来定义自己。

更令人惊讶的是,我在任何地方都没有提到如何做到这一点,是否有定义必要工厂的模式或者我在做一些根本错误的事情?

0 投票
3 回答
7439 浏览

ruby-on-rails - has_many 同时尊重 factory_girl 中的构建策略

情况

问题

如果运行@user = Factory(:user_with_items)@user.items包含这两项。问题是这些项目与数据库中的用户没有关联。如果您重新加载关联@user.items(true),那么您将返回一个空数组。我知道您可以手动构建它们或自己创建辅助方法来构建对象图,但我想避免这种情况。

问题

所以,我的问题是如何在 factory_girl 中建立 has_many 关系,同时尊重构建策略?

0 投票
4 回答
1138 浏览

ruby-on-rails - Shoulda + FactoryGirl:我可以让我的测试更快吗?

我正在寻找一种方法来加快我的Shoulda + FactoryGirl测试。

我要测试的模型 ( StudentExam) 与其他模型有关联。这些关联对象必须存在,然后我才能创建StudentExam. 因此,它们是在setup.

但是,我们的模型之一 ( School) 需要大量时间来创建。因为setup在每条语句之前都被调用should,所以整个测试用例需要 eons 来执行——它为每个执行的 should 语句创建一个新@school@student,@topic和。@exam

我正在寻找一种方法来创建这些对象一次且仅一次。是否有类似startupforbefore_all方法的东西可以让我创建将在整个测试用例的其余部分持续存在的记录?

基本上我正在寻找与 RSpec 完全相同的东西before(:all)。我不关心依赖问题,因为这些测试永远不会修改那些昂贵的对象。

这是一个示例测试用例。为长代码道歉(我还创建了一个要点):

0 投票
3 回答
1764 浏览

ruby-on-rails - 在黄瓜中与 factory_girl 建立关联的最佳做法是什么?

我通常使用这个步骤来设置 factory_girl 的记录:

这是我在建立关联时的解决方法:

我知道这很糟糕。从域人员的角度来看,使用 ids 会使整个事情变得脆弱和神秘。

所以,我的问题是——建立与 factory_girl 的关联和上面的表参数的最佳做法是什么?

0 投票
2 回答
738 浏览

ruby - 沉默工厂女孩伐木

只是为了澄清一下,我不是一些残忍的工厂老板,试图让工作的女士们保持沉默。我有一个非常烦人的问题,在我的规范中使用 Thoughtbot 的工厂女孩​​时,每次使用 Factory.create(:foo) 时,新创建的 ActiveRecord 模型实例都会记录到控制台。这使得查看我的控制台输出更难直观地过滤掉所有额外的日志记录。是否有某个地方的设置或可以设置的标志来使这个额外的日志静音?

下面是我的 rspec 输出的一个小例子。这 '。' 在这种情况下,在每一行的开头是一个成功的测试。

我已经多次挑选了我的规格,看看我是否在任何地方都有“puts foo.inspect”,但我没有。这发生在我所有使用自动测试和正常运行测试的 rspec 和黄瓜测试中。

这是与上述输出相关的我的factory.rb文件。注意:我的 factory.rb 中发生了一些小小的幻想。

[更新:2009-11-20] 只是想保持新鲜,看看其他人是否有任何想法。

0 投票
3 回答
5998 浏览

ruby-on-rails - 测试和建立连接

如何为establish_connection模型中使用的项目编写测试以连接到另一个数据库?

0 投票
10 回答
15356 浏览

ruby-on-rails - 在具有唯一约束的关联中使用 Rails 中的 factory_girl。得到重复的错误

我正在使用 Rails 2.2 项目来更新它。我正在用工厂替换现有的固定装置(使用 factory_girl)并且遇到了一些问题。问题在于表示具有查找数据的表的模型。当我使用具有相同产品类型的两种产品创建购物车时,每个创建的产品都在重新创建相同的产品类型。此错误来自对 ProductType 模型的唯一验证。

问题演示

这是来自一个单元测试,我在其中创建了一个购物车并将其拼凑在一起。我必须这样做才能解决问题。不过,这仍然说明了问题。我会解释的。

添加的两个产品类型相同,创建每个产品时都会重新创建产品类型并创建副本。

生成的错误是:“ActiveRecord::RecordInvalid:验证失败:名称已被采用,代码已被采用”

解决方法

此示例的解决方法是覆盖正在使用的产品类型并传入特定实例,因此仅使用一个实例。“add_product_type”被提前获取并为每个购物车项目传递。

问题

将 factory_girl 与“选择列表”类型的关联一起使用的最佳方式是什么?

我希望工厂定义包含所有内容,而不必在测试中组装它,尽管我可以忍受它。

背景和额外细节

工厂/product.rb

ProductType 的“代码”的目的是让应用程序可以赋予它们特殊的含义。ProductType 模型如下所示:

工厂/cart.rb

当我尝试使用相同产品类型的两个项目定义购物车时,我收到上述相同的错误。

0 投票
2 回答
2201 浏览

ruby-on-rails - factory_girl 协会验证

我有一个问题,我有一个父模型Foo,它has_many :barshas_many :bazes. 最后,我还有一个连接模型BarBaz,其中belongs_to :barbelongs_to :baz. 我想验证所有 bar_bazes,以便它的 bar 和 baz 都属于同一个 foo。但我似乎无法找到一种方法来为这个模型定义一个有效的工厂。

当我尝试创建后者时,我得到一个无效的记录错误,因为 bar 和 baz factory_girl 尝试将它关联起来,每个都有自己的 foo。我搞砸了吗?

0 投票
1 回答
3051 浏览

ruby-on-rails - 单元测试rails时的ActiveSupport::TestCase vs Test::Unit::TestCase

我最近注意到,如果我的测试子类 Test::Unit::TestCase 在我的测试运行后没有清理我的测试数据库。如果我的测试是 ActiveSupport::TestCase 的子类,则所有内容都已正确清理。

谁能解释为什么,和/或提供使用一个与另一个的解释?

我正在使用 shoulda 和 factory_girl。

谢谢。