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.
- 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'
- 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
このようなエラー表示が出ました。
このエラーは何を意味しているのですか?