Test :: Unit Rails - 如何断言一个数字大于另一个数字?

Amo*_*tir 40 assert ruby-on-rails testunit

我正在用Test :: Unit编写我的第一个单元测试,我已经达到了需要比较两个数字的程度.令我惊讶的是,我发现以下都没有:

assert_greater_than
assert_lesser_than
assert_greater_or_equal_than
assert_lesser_or_equal_than
Run Code Online (Sandbox Code Playgroud)

这是正常的吗?那我该怎么办?

谢谢

Jac*_*son 65

而不是像你建议的那样提供一堆不同的断言,Test :: Unit提供了方法assert_operator,如下所示:

assert_operator x, :>, y
assert_operator x, :>=, y
etc. 
Run Code Online (Sandbox Code Playgroud)


bra*_*boy 11

怎么这么简单,

assert x>y
Run Code Online (Sandbox Code Playgroud)

  • Assert()几乎总是可以用来应用给定的测试,但它应该是最后的手段,因为它在失败的情况下提供的结果要少得多.在这种情况下,更好的方法是使用assert_operator. (13认同)
  • 与布尔值一起使用的实际断言只是`assert`,而不是`assert_true`. (4认同)
  • (Bragboy编辑;上面的版本现在是正确的.) (2认同)

Tyl*_*ler 8

以下是您可以放入的一些功能test/test_helper.rb

  def assert_gt(a, b)
    assert_operator a, :>, b
  end
  
  def assert_gte(a, b)
    assert_operator a, :>=, b
  end

  def assert_lt(a, b)
    assert_operator a, :<, b
  end

  def assert_lte(a, b)
    assert_operator a, :<=, b
  end
Run Code Online (Sandbox Code Playgroud)

然后像这样调用:

  def assert_gt(a, b)
    assert_operator a, :>, b
  end
  
  def assert_gte(a, b)
    assert_operator a, :>=, b
  end

  def assert_lt(a, b)
    assert_operator a, :<, b
  end

  def assert_lte(a, b)
    assert_operator a, :<=, b
  end
Run Code Online (Sandbox Code Playgroud)