(´-`). 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) 밖에 방법을 발견하지 않는다. . .
뭔가 좋은 방법이 없다고 생각합니다.

좋은 웹페이지 즐겨찾기