質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Turnip

Turnipは、RSpec向けGherkin拡張ライブラリ。フォーム入力やボタンのクリックなどの操作を自然言語風のDSLで記述し自動テストを実現するRuby製ツールです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Q&A

0回答

388閲覧

Ruby+Rspec+Turnipを使って、標準入力および出力のテストをしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Turnip

Turnipは、RSpec向けGherkin拡張ライブラリ。フォーム入力やボタンのクリックなどの操作を自然言語風のDSLで記述し自動テストを実現するRuby製ツールです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

0グッド

0クリップ

投稿2017/07/23 19:15

編集2022/01/12 10:55

###前提・実現したいこと
Ruby+Rspec+Turnipを使って、標準入力および出力のテストをしたい。
よろしくお願いいたします。

###発生している問題・エラーメッセージ
Turnipフェーズで、入力待ちになってしまうが、入力待ちにならないようにしたい。

$ bundle exec rspec Turnipフェーズ: 標準入力から文字列を受け取る 標準入力から文字列を受け取る

###該当のソースコード
stdinput.feature

Gherkin

1#language: ja 2 3機能: Turnipフェーズ: 標準入力から文字列を受け取る 4 5 標準入力から文字列を受け取る 6 7 シナリオ: 標準入力から文字列を受け取る 8 前提 標準入力に文字列が入力されるとする 9 もし 標準入力から文字列を受け取る 10 ならば その文字列は "abc" である

stdinput_steps.rb

ruby

1# coding: utf-8 2require "stdinput" 3 4step "標準入力に文字列が入力されるとする" do 5 @smbl = Stdinput::GetString.new 6 @smbl.getstr 7end 8 9step "標準入力から文字列を受け取る" do 10 @msg = @smbl.str 11end 12 13step "その文字列は :greeting である" do |greeting| 14 expect(@msg).to be == greeting 15end

stdinput_spec.rb

ruby

1require 'spec_helper' 2require "stdinput" 3 4module Stdinput 5 describe "RSpecフェーズ: GetString" do 6 let(:s) { GetString.new } 7 before do 8 allow(s).to receive(:gets).and_return("abc") 9 s.getstr 10 end 11 12 context "#getstr" do 13 it { expect(s.str).to be == "abc" } 14 end 15 16 context "#prtstr" do 17 it { expect { s.prtstr }.to output("abc\n").to_stdout } 18 end 19 end 20end

stdinput.rb

ruby

1module Stdinput 2 class GetString 3 attr_reader :str 4 5 def initialize 6 @str = nil 7 end 8 9 def getstr 10 @str = gets.chomp 11 end 12 13 def prtstr 14 puts @str 15 end 16 end 17end

###補足情報(言語/FW/ツール等のバージョンなど)

shell

1$ ruby -v 2ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux] 3 4$ rspec -v 5RSpec 3.6 6 - rspec-core 3.6.0 7 - rspec-expectations 3.6.0 8 - rspec-mocks 3.6.0 9 - rspec-support 3.6.0 10 11$ gem list turnip 12*** LOCAL GEMS *** 13turnip (3.0.0)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問