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

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

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

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

RSpec

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

Q&A

解決済

1回答

1311閲覧

Rubyで書いたコードをMinitestすると実行結果がnilになってしまう

yoshi751

総合スコア19

Ruby

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

RSpec

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

0グッド

0クリップ

投稿2020/01/15 07:26

目的 テストの実行結果を期待通りに実行したい

現状のコード
human.rb

require 'net/http' require 'uri' class Human attr_accessor :name, :age, :url def initialize(name, age, url) @name = name @age = age @url = URI.parse(url) end def run puts "#{@name}" puts "#{@age}" puts "#{@url}" end def url_analysis puts "ポート#{@url.port}, スキーマ#{@url.scheme}" end end

human_test.rb

require 'minitest/autorun' require '/Users/yoshidakai/test_parctice/human.rb' class HumanTest < Minitest::Test def setup @user1 = Human.new("kai", 21, "http://sample.com") @user2 = Human.new("satoshi", 24, "http://sample.com") end def test_name assert_equal "kai", @user1.name assert_equal "satoshi", @user2.name end def test_age assert_equal 21, @user1.age assert_equal 24, @user2.age end def test_url_analysis assert_equal "ポート80, スキーマhttp", @user1.url_analysis end end

##実行結果

Run options: --seed 40492 # Running: ..ポート80, スキーマhttp F Finished in 0.000960s, 3124.9999 runs/s, 5208.3331 assertions/s. 1) Failure: HumanTest#test_url_analysis [human_test.rb:22]: Expected: "ポート80, スキーマhttp" Actual: nil 3 runs, 5 assertions, 1 failures, 0 errors, 0 skips

human_test.rbのtest_url_analysisのところで、値がnilになってしまいます。
setupで@user1をインスタンス化して、human.rbのurl_analysisというインスタンスメソッドが使えると自分では、考えているのですが、なぜ、テストの実行結果でnilになってしまうのかが分かりません。
回答よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

url_analysis の実装がよろしくないかと。
puts は文字列をターミナル上に出力するメソッドで、その返り値は nil です。与えられた文字列は返しません。

irb(main):001:0> puts :foo foo => nil

puts を削除して、"ポート#{@url.port}, スキーマ#{@url.scheme}" 自体を返すようにしてみてください。

投稿2020/01/15 07:33

taichi730

総合スコア318

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

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

yoshi751

2020/01/15 07:36

putsを削除したところ、無事動作しました! こんな初歩的な質問に対応してくださり、本当にありがとうございます。 また、何かわからないことがあったら、よろしくお願いしますm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問