代码之家  ›  专栏  ›  技术社区  ›  ryeguy

Shoulda的一些宏有什么意义?

  •  0
  • ryeguy  · 技术社区  · 15 年前

    我认为shoulda确实很整洁,但我不明白为什么有些宏存在,例如:

    • should_validate_uniqueness_of :title
    • should_validate_presence_of :body, :message => /wtf/
    • should_validate_presence_of :title
    • should_validate_numericality_of :user_id

    我对测试比较陌生,但是这些测试有什么作用?它们几乎是模型中相同验证的精确镜像。例如,通过进入你的模型并写作,你到底能完成什么? validates_uniqueness_of :title 然后写一个测试 应该验证标题的唯一性吗? ?

    3 回复  |  直到 15 年前
        1
  •  1
  •   mckeed    15 年前

    它适用于那些想要完全防御测试覆盖的人,比如说,如果有人破坏了 任何 应用程序的功能,测试将失败。

        2
  •  1
  •   Ken    15 年前

    我还没用过 shoulda 我不知道作者们到底在想什么,但是这些年来我写了很多Ruby单元测试,所以我来猜一下。

    程序的某些部分可以纯声明性地在ror中声明,例如 validate_uniqueness_of . 其他一些你写的更复杂的方法来实现。一个类通常由这两个部分的组合组成。注意,与前者相比,后者通常需要更长的时间(在时间和空间上)。

    因此,如果有人对为一个类绘制设计草图感兴趣,也许是因为有人对“tdd”感到兴奋,那么可以编写一个测试来声明类需要支持的所有内容:标题是唯一的,用户ID是梅森素数,不管怎样。这是快速和简单的书写。然后我们就可以为所有这些编写代码,了解类的契约,并且能够以简洁的形式看到它。

    这只是个猜测。

        3
  •  -1
  •   The Who    15 年前

    这些宏是特定于rspec&activerecord的宏。

    是的,应该和RSPEC一起玩。

    http://robots.thoughtbot.com/post/159805987/speculating-with-shoulda