【问题标题】:Idiomatic Test::Unit equivalent of expect {}.to change {}.by(x)Idiomatic Test::Unit 等效于 expect {}.to change {}.by(x)
【发布时间】:2014-08-22 11:57:14
【问题描述】:

现在,我只是在执行之前和之后使用了两次assert_equal,并没有造成太大的伤害。但我之前使用过 RSpec,并且喜欢 expect{}.to change 成语的可读性。我不能简单地在这个项目中使用 RSpec——不是我的项目,也不是我的堆栈。

有没有更惯用的方式来用 Test::Unit 表达预期的变化/增量?

谢谢。

我正在使用 Ruby 1.8.7

【问题讨论】:

    标签: ruby rspec testunit ruby-1.8.7


    【解决方案1】:

    要使用测试单元完成 assert_change,您可以自己滚动。

    下面是帮助您入门的示例代码。根据您的喜好进行调整。

    def assert_change valuer, delta, changer, message = nil
      expect = valuer.call + delta
      changer.call
      actual = valuer.call
      assert_equal expect, actual, message
    end
    

    用法:

    @x = 123
    
    def foo
      @x += 456
    end
    
    assert_change(lambda{@x}, 456, lambda{foo})
    

    【讨论】:

    • 谢谢你,乔尔 - 像广告宣传的那样工作 :) 我所做的唯一调整是将 changer 作为嵌套期望的块传递。
    猜你喜欢
    • 2011-12-12
    • 2019-03-06
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多