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

rails controller test

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

    现在项目需要,从 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
    WildCat
        1
    WildCat  
       2016-01-07 06:03:49 +08:00 via iPhone
    test 不是有自己的 shujuk 吗
    WildCat
        2
    WildCat  
       2016-01-07 06:04:06 +08:00 via iPhone
    打错了, test 不是有自己的数据库吗
    flyingkid
        3
    flyingkid  
       2016-01-07 09:52:44 +08:00
    development
    test
    production
    三个数据库隔离的。

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

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

    还是说 rails controller test 不需要 unit test
    hging
        6
    hging  
       2016-01-07 15:32:43 +08:00
    @final0pro 单元测试是有单独的数据库的. 然后 rails 可以使用 factory girl 进行构建你所需要的依赖数据.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 08:58 · PVG 16:58 · LAX 00:58 · JFK 03:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.