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

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

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

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

Q&A

1回答

1053閲覧

minitestのエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

0グッド

0クリップ

投稿2021/08/03 08:42

編集2021/08/03 15:53

libディレクトリの中に、gateファイルを作成し、

Ruby

1class Gate 2 STATIONS = [:umeda, :juso, :mikuni] 3 FARES = [150, 190] 4 def initialize(name) 5 @name = name 6 end 7 def enter(ticket) 8 ticket.stamp(@name) 9 end 10 11 def exit(ticket) 12 fare = calc_fare(ticket) 13 fare <= ticket.fare 14 end 15 16 def calc_fare(ticket) 17 from = STATIONS.index(ticket.stamped_at) 18 to = STATIONS.index(@name) 19 distance = to - from 20 FARES[distance - 1] 21 end 22end

↑このコードを保存しました。

libディレクトリの中に、ticketファイルを作成し、

Ruby

1class Ticket 2 attr_reader :fare, :stamped_at 3 def initialize(fare) 4 @fare = fare 5 end 6 7 def stamp(name) 8 @stamped_at = name 9 end 10end

↑このコードを保存しました。

testディレクトリの中に、test_gateファイルを作成し、

Ruby

1require 'minitest/autorun' 2require '../lib/gate' 3require '../lib/ticket' 4 5class GateTest < Minitest::Test 6 def test_gate 7 umeda = Gate.new(:umeda) 8 juso = Gate.new(:juso) 9 10 ticket = Ticket.new(150) 11 umeda.enter(ticket) 12 assert juso.exit(ticket) 13 end 14 15 def test_umeda_to_mikuni_when_fare_is_not_enough 16 umeda = Gate.new(:umeda) 17 mikuni = Gate.new(:mikuni) 18 19 ticket = Ticket.new(150) 20 umeda.enter(ticket) 21 refute mikuni.exit(ticket) 22 end 23end

↑これを保存しました。

その後、test_gateファイルをコマンドフロンプト上で実行したら、

un options: --seed 12011

Running:

EE

Finished in 0.003171s, 630.6363 runs/s, 0.0000 assertions/s.

  1. Error:

GateTest#test_gate:
NoMethodError: undefined method stamp' for #<Ticket:0x000001c9a6087db8 @fare=150> C:/Users/???/OneDrive/ドキュメント/furiRuby/lib/gate.rb:8:in enter'
test_gate.rb:11:in `test_gate'

  1. Error:

GateTest#test_umeda_to_mikuni_when_fare_is_not_enough:
NoMethodError: undefined method stamp' for #<Ticket:0x000001c9a6014570 @fare=150> C:/Users/???/OneDrive/ドキュメント/furiRuby/lib/gate.rb:8:in enter'
test_gate.rb:20:in `test_umeda_to_mikuni_when_fare_is_not_enough'

2 runs, 0 assertions, 0 failures, 2 errors, 0 skips

このようなエラー表示が出ました。

このエラーは何を意味しているのですか?

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

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

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

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

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

maisumakun

2021/08/03 08:57

なにか自分で調べてみましたか?
退会済みユーザー

退会済みユーザー

2021/08/03 15:33

分からないから聞いてるんです。
maisumakun

2021/08/03 22:18

再現しません。手元で実行したら、別のエラーが出ました。 (そちらのエラーは全角スペースの混入によるものでした)
退会済みユーザー

退会済みユーザー

2021/08/04 05:33

全てを半角スペースにもう一度し直し、実行してみても、質問文と同じエラーが発生しました。 このエラーは具体的には何を言っているのですか?
maisumakun

2021/08/04 05:37 編集

> このエラーは具体的には何を言っているのですか? 書いてあるとおりです…が、提示されたコードでそのエラーにはならないはずです(全角スペースの件を修正したら、手元ではエラー無くテストを通過しました)。
guest

回答1

0

このようなエラー表示が出ました。

再現しません。提示されたコードに1箇所全角スペースが混入していましたが(それが別なエラーを出していました)、そこを修正したところ、問題なくテストを通過しました。

投稿2021/08/04 05:39

maisumakun

総合スコア146018

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

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

maisumakun

2021/08/04 05:42 編集

undefined method `stamp' for #<Ticketというのは、提示されたコードと辻褄が合いません。
退会済みユーザー

退会済みユーザー

2021/08/04 05:49

何度やってもこのエラーが出ます。 このエラー文はコマンドプロンプトのコピペなので、絶対に打ち間違えはしていません。 これはstampメソッドがTicketクラスで見つからないと言っているのですか?
maisumakun

2021/08/04 05:53 編集

> これはstampメソッドがTicketクラスで見つからないと言っているのですか? そのとおりです。
退会済みユーザー

退会済みユーザー

2021/08/04 07:46

分かりました。 もう一度コードを書き直してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問