如何在ruby代码中放置断言

如何在ruby代码中放置断言,ruby,Ruby,我想在ruby代码中使用断言和赋值(例如:检查是否创建了zip文件、标签是否存在、文本区域中的消息等)。我放了一些断言语句,比如assert@selenium.is\u text\u present(textMessage),但它们不起作用 请告诉我是否要安装任何ruby gem for assertions。对于简单的asserts,您可能最好使用自己的assert方法来阻止: ruby-1.9.1-p378 > class AssertionError < RuntimeErro

我想在ruby代码中使用断言和赋值(例如:检查是否创建了zip文件、标签是否存在、文本区域中的消息等)。我放了一些断言语句,比如
assert@selenium.is\u text\u present(textMessage)
,但它们不起作用


请告诉我是否要安装任何ruby gem for assertions。

对于简单的asserts,您可能最好使用自己的assert方法来阻止:

ruby-1.9.1-p378 > class AssertionError < RuntimeError
ruby-1.9.1-p378 ?>  end
 => nil 
ruby-1.9.1-p378 > def assert &block
ruby-1.9.1-p378 ?>  raise AssertionError unless yield
ruby-1.9.1-p378 ?>  end
 => nil 
ruby-1.9.1-p378 > assert { 1 > 0 }
 => nil 
ruby-1.9.1-p378 > assert { 5 == 12 }
AssertionError: AssertionError
    from (irb):8:in `assert'
    from (irb):11
    from /Users/mr/.rvm/rubies/ruby-1.9.1-p378/bin/irb:17:in `<main>'
ruby-1.9.1-p378>类断言错误结束
=>零
ruby-1.9.1-p378>def断言和块
ruby-1.9.1-p378?>提高断言错误,除非屈服
ruby-1.9.1-p378?>结束
=>零
ruby-1.9.1-p378>断言{1>0}
=>零
ruby-1.9.1-p378>断言{5==12}
AssertionError:AssertionError
from(irb):8:in'assert'
来自(irb):11
from/Users/mr/.rvm/rubies/ruby-1.9.1-p378/bin/irb:17:in`'
以可复制的形式:

class AssertionError < RuntimeError
end

def assert &block
    raise AssertionError unless yield
end

i = 1
assert {i >= 0}
assert { 5 == 12 }
class AssertionError=0}
断言{5==12}
使用gem向Ruby添加断言

请参见:


请确保您已经阅读了,请注意,我们都很友好,这就是为什么我们跳过了邮件中通常的“嗨/谢谢”部分,并且--欢迎来到StackOverflow!认为这是类似的-是否有理由使用块作为参数而不是简单的布尔值?如果assert方法在执行“raise…除非yield”之前检查一些其他条件(例如“If DEBUG_ENABLED”),那么如果该条件返回false,则不会调用yield,因此不会计算传入的块。如果块所做的是昂贵的,这可能会对程序执行时间产生很大影响。