在开发和测试过程中,如果不变量被破坏,是否有内置的方式来指定Rails中的断言,这会引发异常?从模型或控制器断言Rails?
编辑:为了清楚起见,我正在寻找可以放在模型或控制器中的断言,而不是断言您将用于单元测试。
在开发和测试过程中,如果不变量被破坏,是否有内置的方式来指定Rails中的断言,这会引发异常?从模型或控制器断言Rails?
编辑:为了清楚起见,我正在寻找可以放在模型或控制器中的断言,而不是断言您将用于单元测试。
如果你正在编写测试,有许多断言函数。但是对于主代码中的assertiona来说,没有任何代码,你可以很容易地推出自己的代码。
添加这样的事情environment.rb
:
class AssertFailure < Exception
end
def assert(message = 'assertion failed')
unless block_given? and yield
raise message
end
end
,并使它成为一个无操作在environments/production.rb
所以最小的开销
def assert(message = 'assertion failed')
end
然后,在你的代码,你可以断言,以你心中的内容:
assert { value == expected_value }
assert('value was not what was expected') { value == expected_value }
如果value
不等于expected_value
并且您没有在生产中运行,则会引发异常。
超越these,您的意思是?
引发异常,并使用rescue_from。
正如@Gordon所说,没有。正如在这个问题中提到的,我最终使用了Jorge Manrubia的solid_assert gem:Is it idiomatic Ruby to add an assert() method to Ruby's Kernel class?
我相信OP在讨论主代码中的断言,而不是测试断言。 – 2009-01-28 22:22:56
很难说,不是吗? :) – 2009-01-28 22:52:23