rails controller test

2016-01-07 05:58:50 +08:00
 final0pro

现在项目需要,从 java 转到 rails 。总是带着就习惯去写 rails 。比如觉得 Integration Test 很重要,于是写了 cucumber tests 。然后再看 controller test ,总觉得很别扭。

比如,

user = User.find(1)
...

按照以前的习惯,会 mock 一个 mockedUser ,然后让 User.find(1) 返回 mockedUser 。但是现有的 test 会真真实实地在数据库里插入一个 id 为 1 的 user 。

又或者

user = ...
user.do_something

不 mock user 的话, do_something 这个方法会被执行,这样 controller test 就依赖于 User 这个 Object 。

哪种是 rails way ?如何 argue 呀

1998 次点击
所在节点    问与答
6 条回复
WildCat
2016-01-07 06:03:49 +08:00
test 不是有自己的 shujuk 吗
WildCat
2016-01-07 06:04:06 +08:00
打错了, test 不是有自己的数据库吗
flyingkid
2016-01-07 09:52:44 +08:00
development
test
production
三个数据库隔离的。

然后我觉得你应该是想要这种东西?
https://github.com/zeisler/active_mocker
hging
2016-01-07 09:59:49 +08:00
你需要 rspec+factory girl
final0pro
2016-01-07 15:21:52 +08:00
@WildCat @flyingkid @hging

因为我觉得 controller 的 unit test 不需要真实的数据库呀。

还是说 rails controller test 不需要 unit test
hging
2016-01-07 15:32:43 +08:00
@final0pro 单元测试是有单独的数据库的. 然后 rails 可以使用 factory girl 进行构建你所需要的依赖数据.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/248919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX