(´-`).。oO(標準出力の『Hello』をお手軽に探したい。
Ruby初心者です。
今日は「Hello World」を出力するだけのrakeタスクを作りました。
# rake hoge:hello
"Hello World"
結果に「Hello」が含まれていることを確認するテストを書いてて、簡潔に文字列指定で探せる方法があれば良いと思ったのですが。。。
コード
hoge_spec.rb
require 'rails_helper'
require 'rake'
RSpec.describe 'Hoge', type: :task do
# 中略
describe 'rake hoge:hello' do
let(:task) { 'hoge:hello' }
context '標準出力のHelloを探せ' do
it '標準出力でHello #1 outputマッチャーの引数に文字列' do
# ※理想型。ただし完全一致しないので失敗する。。。
expect{ @rake[task].invoke() }.to output('Hello').to_stdout
end
it '標準出力でHello #2 outputマッチャーの引数に正規表現' do
# ※うまくいくけど正規表現のマッチ使いにくい。。。
expect{ @rake[task].invoke() }.to output(/Hello/).to_stdout
end
it '標準出力でHello #3 includeで部分一致' do
# ※うまくいくけどコードが長い。。。
$stdout = StringIO.new
@rake[task].invoke()
output_text = $stdout.string
$stdout = STDOUT
expect(output_text).to include 'Hello'
end
end
end
end
実行結果
・・・文字列指定(#1)でできたら良いなと思ってたのですがエラー。
目的を実現するには正規表現(#2)にするか標準出力を変数に代入する(#3)しか方法が見つからず。。。
何か良い方法がないものかと思ってます。
Author And Source
この問題について((´-`).。oO(標準出力の『Hello』をお手軽に探したい。), 我々は、より多くの情報をここで見つけました https://qiita.com/hamkiti/items/4049e60f25c758ef8766著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .