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

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

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

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

RSpec

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

Q&A

解決済

1回答

2876閲覧

ruby rspecのテストケースの書き方

sanami

総合スコア11

Ruby

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

RSpec

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

1グッド

0クリップ

投稿2015/03/01 12:57

rspeの初心者です。
いままで扱っていたrubyのプログラムをrspec形式に書き直したいのですが、
どのように書けばいいかいまいち解らなので教えていただければと思います。

if ARGV.count == 0
puts 'nothing'
elsif ARGV[0] =~ /\A\d+\z/
puts ARGV[0].to_i ₊ 6
else
puts "#{ARGV[0]}abcb"
end

上記のようなものはどのようにして書けばよろしいでしょうか?
よろしくお願いします。

ykws👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

コンソールへの出力をテストするのはちょっと面倒なので、
テスト対象のプログラムをテストしやすいように書き換えます。
sample1.rb

lang

1# coding: utf-8 2 3def parse_argv(argv) 4 if argv.count == 0 5 'nothing' 6 elsif argv[0] =~ /\A\d+\z/ 7 argv[0].to_i * 6 8 else 9 "#{argv[0]}abcb" 10 end 11end 12 13if __FILE__ == $PROGRAM_NAME 14 puts parse_argv ARGV 15end

この sample1.rb 中の parse_argv メソッドのテストを書くことにします。

spec/sample1_spec.rb

lang

1# coding: utf-8 2 3require './sample1.rb' 4 5describe 'Sample1 parse_argv' do 6 it '引数が無い場合' do 7 expect(parse_argv([])).to eq('nothing') 8 end 9 10 it "引数が1つの数字" do 11 expect(parse_argv(['123'])).to eq(123 * 6) 12 end 13 14 it "引数が1つの文字" do 15 expect(parse_argv(["123A"])).to eq('123Aabcb') 16 end 17 18end

実行結果例です。

$ rspec sample1_spec.rb rspec ... Finished in 0.00137 seconds (files took 0.17877 seconds to load) 3 examples, 0 failures katoy-no-MacBook-Pro-2:rspec_x katoy$ rspec ... Finished in 0.00159 seconds (files took 0.17147 seconds to load) 3 examples, 0 failures

エラーが起こるように sample1_spec.rb を書き換えてから実行してみます。

$ rspec ..F Failures: 1) Sample1 prase_argv 引数が1つの文字 Failure/Error: expect(parse_argv(["123A"])).to eq('123Aabcbx') expected: "123Aabcbx" got: "123Aabcb" (compared using ==) # ./spec/sample1_spec.rb:15:in `block (2 levels) in <top (required)>' Finished in 0.00151 seconds (files took 0.17233 seconds to load) 3 examples, 1 failure Failed examples: rspec ./spec/sample1_spec.rb:14 # Sample1 prase_argv 引数が1つの文字

参考:

投稿2015/03/01 13:56

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問