final0pro
V2EX  ›  问与答

rails controller test

  •  
  •   final0pro · Jan 7, 2016 · 2782 views
    This topic created in 3805 days ago, the information mentioned may be changed or developed.

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

    然后我觉得你应该是想要这种东西?
    https://github.com/zeisler/active_mocker
    hging
        4
    hging  
       Jan 7, 2016
    你需要 rspec+factory girl
    final0pro
        5
    final0pro  
    OP
       Jan 7, 2016
    @WildCat @flyingkid @hging

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

    还是说 rails controller test 不需要 unit test
    hging
        6
    hging  
       Jan 7, 2016
    @final0pro 单元测试是有单独的数据库的. 然后 rails 可以使用 factory girl 进行构建你所需要的依赖数据.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5555 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 06:50 · PVG 14:50 · LAX 23:50 · JFK 02:50
    ♥ Do have faith in what you're doing.