gpt4 book ai didi

ruby - 如何为 Rspec 标准输出匹配器提供多个字符串?

转载 作者:行者123 更新时间:2023-12-04 02:00:51 26 4
gpt4 key购买 nike

我有一些 rspec 测试来检查命令的输出。

以前,我正在 mock 整个 $stdout.string,我可以这样做:

  expect($stdout.string).to include 'DEBUG -- : Request Headers:'
expect($stdout.string).to include 'Bearer foo'
expect($stdout.string).to include 'Some other thing'

我正在重构它以切换到 rspec output(arg).to_stdout方法。

然而, looking at the docs ,它似乎只允许给出字符串或正则表达式:
RSpec.describe "output.to_stdout matcher" do
specify { expect { print('foo') }.to output.to_stdout }
specify { expect { print('foo') }.to output('foo').to_stdout }
specify { expect { print('foo') }.to output(/foo/).to_stdout }

我尝试链接期望,但没有奏效:
expect { print 'foo bar baz' }.to output(/foo/).to_stdout.and output(/bar/).to_stdout.and output(/baz/).to_stdout

给出结果:
 Failure/Error: expect { print 'foo bar baz' }.to output(/foo/).to_stdout.and output(/bar/).to_stdout.and output(/baz/).to_stdout

expected block to output /bar/ to stdout, but output nothing

...and:

expected block to output /baz/ to stdout, but output nothing

有没有办法给出一组预期的字符串?

最佳答案

正如您似乎已经发现的那样,output不允许您链接或 compose ,但您可以捕获 expect阻止并对其运行多个测试。

it 'verifies hello world' do
expectation = expect { puts 'hello'; puts 'world' }
expectation.to output(/hello/).to_stdout
expectation.to output(/world/).to_stdout
end

关于ruby - 如何为 Rspec 标准输出匹配器提供多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47367438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com