RubyでTDDを単純な再帰的Factorialでやろうとしています。私は単純なテストを実行しようとしていますが、NoMethodErrorを実行し続けます。私は何が間違っているのだろうと思っていたのですか?ここでRubyでテスト駆動開発をしようとするとNoMethodErrorが発生する
は私のfactorial_test.rb
require 'minitest/autorun'
require './factorial.rb'
class FactorialTest < MiniTest::Test
describe Factorial do
it "should provide factorial of 1 as 1" do
factorial(1).must_equal 1
end
end
end
、ここでは私のfactorial.rb
class Factorial
def factorial(number)
1
end
end
ですが、私はエラーを取得しておいてください。
`NoMethodError: undefined method `factorial' for #<#<Class:0x007fbaa5962d70>:0x007fbaa584a758>`
私も追加してみましたセットアップ部分を私のfactorial_test.rbにします。
require 'minitest/autorun'
require './factorial.rb'
class FactorialTest < MiniTest::Test
def setup
@factorial = Factorial.new
end
describe Factorial do
it "should provide factorial of 1 as 1" do
factorial.factorial(1).must_equal 1
end
end
end
しかし、私はNameErrorで終わる:
`NameError: undefined local variable or method `factorial' for #<#<Class:0x007fc0e8996fc8>:0x007fc0e90ef1f8>`
誰も私を助けてくださいことができる場合、私はそれをいただければ幸いです!
EDIT:
describe Factorial do
it "should provide factorial of 1 as 1" do
@factorial.factorial(1).must_equal 1
end
end
は、私は別のエラーを取得:
以下の提案から修正を適用
NoMethodError: undefined method `factorial' for nil:NilClass
を私は階乗を初期化しています方法に何か問題はありますクラス?
ありがとう!私はそのエラーを渡しましたが、修正を適用すると 'NoMethodError:未定義メソッド' factorial 'for nil:NilClass'という新しいエラーが発生しています。私はそれを正しく設定していますか? – user3369494
これで分かりましたが、インスタンス変数が設定されるようにセットアップメソッドを呼び出す必要があります。次に、そのインスタンス変数のメソッドを呼び出すことができます。 – hackrnaut