首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Coding
V2EX  ›  问与答

rails controller test

  •  
  •   final0pro · 2016-01-07 05:58:50 +08:00 · 1335 次点击
    这是一个创建于 1434 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在项目需要,从 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 呀

    6 回复  |  直到 2016-01-07 15:32:43 +08:00
        1
    WildCat   2016-01-07 06:03:49 +08:00 via iPhone
    test 不是有自己的 shujuk 吗
        2
    WildCat   2016-01-07 06:04:06 +08:00 via iPhone
    打错了, test 不是有自己的数据库吗
        3
    flyingkid   2016-01-07 09:52:44 +08:00
    development
    test
    production
    三个数据库隔离的。

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

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

    还是说 rails controller test 不需要 unit test
        6
    hging   2016-01-07 15:32:43 +08:00
    @final0pro 单元测试是有单独的数据库的. 然后 rails 可以使用 factory girl 进行构建你所需要的依赖数据.
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4084 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 08:14 · PVG 16:14 · LAX 00:14 · JFK 03:14
    ♥ Do have faith in what you're doing.