0
コマンドの出力を確認するためにいくつかのrspecテストがあります。複数の文字列をRspec stdout matcherに与えるには?
以前、私は、全体の$ 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
期待される文字列の配列を与える方法はありますか?
おそらく、[here](https://stackoverflow.com/a/6437567/2981429)のような正規表現で肯定的な先読みを使用できます。 –