【问题标题】:Unit testing order of printing to standard output打印到标准输出的单元测试顺序
【发布时间】:2015-11-30 22:40:32
【问题描述】:

在 RSpec 中,我想测试程序是否以正确的顺序将正确的消息打印到标准输出。我正在使用“puts”来打印。输出应该是

A
B
C

我该怎么做?我试过了

messages = ['A', 'B', 'C']
messages.each do |message|
  expect(STDOUT).to receive(puts).with(message).once
end

但是当我切换消息的顺序时测试仍然通过。当消息以错误的顺序打印时,测试不应该通过。

如何正确编写 RSpec?

【问题讨论】:

    标签: ruby rspec io


    【解决方案1】:

    如果你使用的是 RSpec 3,你可以使用ordered

    messages = ['A', 'B', 'C']
    messages.each do |message|
      expect(STDOUT).to receive(puts).with(message).ordered
    end
    

    【讨论】:

      猜你喜欢
      • 2014-08-05
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 2014-07-30
      • 2018-12-25
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多