我有一些 rspec 测试来检查命令的输出。
以前,我嘲笑整个 $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'
Run Code Online (Sandbox Code Playgroud)
我正在重构它以切换到 rspecoutput(arg).to_stdout方法。
然而,查看文档,它似乎只允许给出字符串或正则表达式:
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 }
Run Code Online (Sandbox Code Playgroud)
我尝试链接期望,但没有成功:
expect { print 'foo bar baz' }.to output(/foo/).to_stdout.and output(/bar/).to_stdout.and output(/baz/).to_stdout
Run Code Online (Sandbox Code Playgroud)
给出结果:
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
Run Code Online (Sandbox Code Playgroud)
有没有办法给出预期字符串的数组?
Ven*_*tsu 11
传递给的匹配器output可以是任何匹配器,这使您可以.and使用match匹配器将链接的组合移动到内部:
expect { print 'foo bar baz' }.to output( match(/foo/).and match(/bar/).and match(/baz/) ).to_stdout
Run Code Online (Sandbox Code Playgroud)
或者更接近原始示例include可以采用字符串列表:
expect { print 'foo bar baz' }.to output(include('foo', 'bar', 'baz')).to_stdout
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2638 次 |
| 最近记录: |