2015-09-04 87 views
1

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

A 
B 
C 

我该怎么做?我试过

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

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

我该如何正确编写RSpec?

回答

4

如果您正在使用的RSpec 3,你可以使用ordered

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