问题标签 [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 投票
2 回答
7173 浏览

ruby - 从工厂女孩那里返回模拟对象

我在 JRuby rails 应用程序中使用 Mocha 和 Factory_girl。当我打电话给工厂时,我想返回已经完成一些模拟的对象。这是我正在尝试做的代码片段。

因为我不希望我的单元和功能测试实际上从 twitter API 中提取,所以我想存根该方法,以便它返回我想要的。但是,这是行不通的。对象在没有任何存根的情况下返回。有没有办法在工厂女孩创建的对象返回给您之前实际执行存根?

0 投票
1 回答
2259 浏览

ruby-on-rails - 工厂女孩中非活动记录关联的问题

我刚开始在测试时使用工厂女孩来更换夹具。我正在开发一个 twitter 客户端,我正在尝试使用 factory girl 创建用于测试的 twitter 对象。当我单独创建它们时,这很好。但是,如果我尝试将它们关联起来,我会收到以下错误。

导致问题的t.association :user, :factory => :twitter_user原因是当它存在时会引发此异常。有没有什么办法解决这一问题?还是工厂女孩只是为 activerecord 对象设计的?谢谢

0 投票
6 回答
10340 浏览

java - Java 是否存在像 Factory Girl 这样的框架?

Factory Girl 是 Rails 中一个方便的框架,用于轻松创建模型实例以进行测试。

来自工厂女孩主页

factory_girl 允许您为每个模型快速定义原型,并请求具有对手头测试很重要的属性的实例。

一个例子(也来自主页):

如果我需要一个用户可以打电话

这将产生一个具有工厂原型中指定的所有属性的用户,除了我明确指定的管理属性。另请注意,电子邮件工厂方法每次调用都会产生不同的电子邮件。

我认为为 Java 实现类似的东西应该很容易,但我不想重新发明轮子。

PS:我知道 JMock 和 EasyMoc,但是我不是在这里谈论一个模拟框架。

0 投票
1 回答
1512 浏览

ruby-on-rails - 您如何使用 accept_nested_attributes_for 创建 RoR 工厂关联?

正如安东指出的那样(感谢安东!)我的问题是测试中的关联缓存,看起来我确实在工厂中正确地创建了nested_attribute。正确的语法是:


accepts_nested__attributes_for在我的工作模型中使用,并且在每次更改模型时几乎失去我的弹珠“夹具潜水”后试图迁移到工厂女孩。

我在下面发布了一堆代码,但我的问题很简单:

如何使用工厂创建nested_attributes?

我可以使用下面的代码创建一个 Job 实例,但我无法在我的单元测试中创建创建车辆。如果没有f.vehicles_attributes...我的作业测试验证失败。

我的单元测试产生以下结果:



0 投票
3 回答
6845 浏览

ruby-on-rails - 如何使用 Factory Girl 定义多个关联对象?

Factory Girl 文档提供了这种用于创建(我猜)父子关联的语法......

帖子属于用户(其“作者”)。

如果你想定义一个 Factory 来创建User有一堆Posts 的 s 怎么办?

或者如果是多对多的情况(例如,请参阅下面的更新)怎么办?


更新

我以为我已经想通了。我试过这个...

起初它似乎有效,但后来我收到验证错误,因为 FG 试图用相同的用户名和电子邮件保存用户两次。

所以我回到我原来的问题。如果你有一个多对多的关系,比如说Usersand Roles,你如何定义一个将返回Users一些关联的工厂Roles?请注意,它Roles必须是唯一的,因此我不能让 FGRole在每次创建User.

0 投票
1 回答
1832 浏览

ruby-on-rails - 在使用 Factory Girl 工厂进行测试时,如何覆盖 AASM 中的 :set_initial_state?

更新

下面回答。如果链接的站点消失,您可以使用 mocha 来存根初始状态并防止覆盖,如 ...

原始问题

我目前正在运行 Acts As State Machine Rails 插件(顺便说一句,它节省了大量时间)并且在与 Factory Girl 一起使用它时遇到了一些挑战(也很棒)。

我希望能够在使用工厂创建对象时设置对象状态。问这个问题的一种通用方法是“在使用工厂创建对象时如何调用类方法?”

我可以随时调用 t.activate!每个测试中的方法,但这会使我的测试变得脆弱。我正在寻找一种在工厂创建级别运行此方法或将其设置在 factory.rb 中的方法。

谢谢...

0 投票
13 回答
14444 浏览

ruby-on-rails - 使用 Test::Unit 和 Shoulda 设置 Factory Girl

我正在尝试在 Ruby on Rails 中使用 Test::Unit 和 Shoulda 设置 Factory Girl。我已经安装了 gem,在 test/factories 目录下创建了我的工厂文件,并在 test/models 目录下创建了我的规范文件。我得到的当前错误是“ArgumentError:没有这样的工厂:测试”,这让我相信 test_factory.rb 文件没有被加载?关于我应该改变什么的任何想法?

这是我的文件。

0 投票
6 回答
16779 浏览

ruby-on-rails - 在 Rails (factory_girl) 中清除单元测试和功能测试之间的测试数据库

最近我从 fixtures 切换到 factory_girl 来测试我的 Ruby on Rails 应用程序。如果我运行 rake test:units,在我的 /units 目录中运行测试,它们都运行得很好。如果我使用 rake test:functionals 运行我的功能测试(在我的 /functional 目录中),情况也是如此。

但是,如果我只是简单地运行 rake 测试,同时运行我的单元测试和功能测试,我的第二组测试(在本例中为功能测试)的验证将失败,并显示消息“验证失败:名称已被采用”。

我相信这是由于功能测试创建的对象与在单元测试中创建的对象具有相同的参数 - 导致我相信在单元测试和功能测试之间没有清除测试数据库。

我使用 factory_girl 的排序来获得对象的唯一属性,这意味着 factory_girl 在测试之间被重置,而数据库则没有。我能做些什么来解决这个问题?有没有办法清除我的两个测试包之间的数据库?

0 投票
3 回答
1892 浏览

ruby-on-rails - 使用 shoulda 和 factory_girl 测试 REST - 销毁

我正在使用 shoulda 和 factory_girl 开发 REST 测试。下面的代码

结果我看到了

你能告诉我 - 有什么问题吗?我如何修改测试以使它们正常工作?

UPD:路线看起来不错

0 投票
2 回答
2039 浏览

ruby-on-rails - DRYer 与 factory_girl 中的关联进行测试

任何人都可以提出一种更好的方法来让工厂使用预先构建的模型实例进行关联吗?例如,这样就可以在下面定义消息工厂的子级,以便调用 to Factory(:my_message)可以代替 Factory(:message,:sender=>@me)?

有时设置散列比这个人为的例子更复杂,或者只是在很多测试中重复,看起来最好把它推到工厂里。

我能想到的一种替代方法是定义一个测试辅助方法,例如create_message_owned_by(@me),但我希望 factory_girl 本身有一种方法。

factory_girl 工厂:

MessagesControllerTest 摘录(使用 shoulda):