1

我的模型中有一个成员具有这些验证

validates :status, :presence => true, :numericality => {:only_integer => true}

为了测试它,我的计划是制作一个只有一个完全有效的模型实例的夹具,然后做一个测试以确保它是有效的,另一个测试以确保将 game_status 设置为 nil 是无效的,然后 3测试数字性:一个测试如果我将其设置为字符串是否无效,一个测试如果我将其设置为小数则它无效,以及一个测试如果我将其设置为整数是否有效。

总的来说,5 次测试来测试 2 条简单的 Rails 验证感觉我可能会过火,尤其是当我添加另一个成员时,就像需要几乎相同验证的状态一样。我知道 rspec 有类似 should_validate_presence_of 的东西,但是对于我的第一个项目,我想使用 test::unit。

如果这是在 Rails 中做事的正常方式,我很好。但如果有更简单的方法,我宁愿这样做。或者你通常不会测试这些简单的东西?

我不是在寻找一个可以为此抽象一切的宝石,除非这样做几乎是公认的标准。否则,我只想以符合一般 Rails 最佳实践的方式使用基本 test::unit。

4

1 回答 1

2

我会说,如果您希望这些功能正常工作,那么您应该测试它们。例如,考虑一下 Rails 的实现是否会在未来发生变化。失败的单元测试将是立即让您知道“嘿!我的应用程序的行为发生了变化!”的好方法。

也就是说,只测试您关心的应用程序用例——无需复制整个 Rails 测试套件。绝对要对您的“快乐”案例进行测试,其中输入应该被认为是有效的。如果您认为有可能/很可能会出现小数或字符串,那么也要测试在这些情况下会发生什么。如果您发现自己在其他地方这样做,请为自己创建一些共享的辅助方法check_doesnt_allow_decimals,例如 等。

于 2013-04-20T06:37:07.747 回答