konchanxxx / menta

MENTAのタスク管理用リポジトリ
0 stars 0 forks source link

書籍プロを目指すRuby 3.3.2 テストコードについて #17

Closed kenkono closed 5 years ago

kenkono commented 5 years ago

概要

書籍プロを目指すRuby 3.3.2 テストコードをサンプルコードの通りに実行するがエラーが出る。

実現したいこと

エラーなく実行したい。

困っていること

fizz_buzz.rbが読み込まれない。

困っていることがバグの場合は事象やログ、エラーメッセージをできるだけそのまま(抜粋などしない)下記に記載してください。

mbp:test mac$ ruby fizz_buzz_test.rb 
Run options: --seed 61340

# Running:

E

Finished in 0.000845s, 1183.4320 runs/s, 0.0000 assertions/s.

  1) Error:
FizzBuzzTest#test_fizz_buzz:
NoMethodError: undefined method `fizz_buzz' for #<FizzBuzzTest:0x007fedf51d2258>
    fizz_buzz_test.rb:5:in `test_fizz_buzz'

1 runs, 0 assertions, 0 failures, 1 errors, 0 skips
mbp:test mac$ ruby fizz_buzz_test.rb 
/Users/kenkono/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- ./lib/fizz_buzz (LoadError)
    from /Users/kenkono/.rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from fizz_buzz_test.rb:2:in `<main>'

解決するために行ったこと

requireの記載を ../lib/fizz_buzzとしたところ、うまくいった。

問題となっている箇所の予想

requireの記載部分

問題となっているアプリケーションのGitHub URL

https://github.com/kenkono/ruby_pro/tree/minitest

kenkono commented 5 years ago

すいません、解決しました。。。 rubyファイルを実行するときのフォルダですが、testフォルダで実行していました。 テキストの記述を見逃しており、正しくはruby test/fizz_buzz_test.rbで実行するとうまくいきました。 お手数をおかけし、申し訳ありません。

konchanxxx commented 5 years ago

おお、レスが遅くなりすみません:bow: ruby test/fizz_buzz_test.rb これで成功して ruby fizz_buzz_test.rb だと成功しない理由は理解済みでしょうか?

konoken commented 5 years ago

@rexitorg require './lib/fizz_buzz' の./が現在地点のフォルダを表しているので、仮にtestフォルダ内で実行すると 1.testフォルダ内のlibフォルダを探す 2.しかしそのようなフォルダはないのでエラーが出る。

  1. 逆にruby-bookフォルダ内にはlib、testフォルダが存在しているため、現在地点からみてlibフォルダがある→成功する。 という理解であってますでしょうか?(すいません、具体的な成功理由を記載しないと実力つかないですもんね(/ _ ; ))
konchanxxx commented 5 years ago

はい、その認識でおkです:smile: 現在地点というのはカレントディレクトリと読んだります。 実行ファイルの階層を表示するなら __dir__ とかを使って表示することができます

https://qiita.com/siman/items/865096c192194b4d4143

# hoge.rb
class Hoge
  def hoge
    puts "current_dir: #{__dir__}"
  end
end
Hoge.new.hoge

とかして ruby hoge.rb とかするとカレントディレクトリを表示することができます:smile:

konchanxxx commented 5 years ago

こちら解決したようなのでcloseしておきます:bow:

kenkono commented 5 years ago

@rexitorg 早速試したところ、下記のようにカレントディレクトリが表示されました! ありがとうございます!

mbp:~ mac$ cd ruby-book/lib/
mbp:lib mac$ ruby test.rb 
current_dir: /Users/kenkono/ruby-book/lib
mbp:lib mac$ 
konchanxxx commented 5 years ago

おお、よかったっす!こうやってコード書いて実際に動かしていくとプログラミング仕様への理解が深まるので良いと思います:smile: