2009-01-28 70 views
5

在开发和测试过程中,如果不变量被破坏,是否有内置的方式来指定Rails中的断言,这会引发异常?从模型或控制器断言Rails?

编辑:为了清楚起见,我正在寻找可以放在模型或控制器中的断言,而不是断言您将用于单元测试。

回答

9

如果你正在编写测试,有许多断言函数。但是对于主代码中的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并且您没有在生产中运行,则会引发异常。

1

超越these,您的意思是?

+0

我相信OP在讨论主代码中的断言,而不是测试断言。 – 2009-01-28 22:22:56

+0

很难说,不是吗? :) – 2009-01-28 22:52:23