我正在做一个关于练习的Ruby练习 - 这是我第一次执行codecademy。并且设置是我在同一个文件夹中有两个文件 - hamming_test.rb,其中require_relative hamming.rb--我得到了那么远,但没有更远。我在hamming.rb中使用空方法设置了一个空类,但是当hamming_test.rb运行并进入第一个方法调用时,它会返回该行的NoMethodError。我怀疑代码是可以的(就目前而言),但问题出在我的计算机设置中。我试过从TextEdit和控制台以及NetBeans中运行它:同样的错误。我已经尝试了各种各样的事情,但总是出现同样的错误 - 就像解释器可以找到文件一样,但却无法看到它内部。我有一台运行Yosemite的Mac,而Ruby看起来运行正常。我甚至似乎无法走出大门,请帮忙。以下代码,如果有帮助:
hamming.rb:
class Hamming
def compute
end
end
hamming_test.rb:
require 'minitest/autorun'
begin
require_relative 'hamming'
rescue LoadError => e
puts "\n\n#{e.backtrace.first} #{e.message}"
puts DATA.read
exit 1
end
class HammingTest < MiniTest::Unit::TestCase
def test_no_difference_between_identical_strands
assert_equal 0, Hamming.compute('A', 'A')
end
def test_complete_hamming_distance_of_for_single_nucleotide_strand
skip
assert_equal 1, Hamming.compute('A','G')
end
def test_complete_hamming_distance_of_for_small_strand
skip
assert_equal 2, Hamming.compute('AG','CT')
end
def test_small_hamming_distance
skip
assert_equal 1, Hamming.compute('AT','CT')
end
def test_small_hamming_distance_in_longer_strand
skip
assert_equal 1, Hamming.compute('GGACG', 'GGTCG')
end
def test_ignores_extra_length_on_first_strand_when_longer
skip
assert_equal 1, Hamming.compute('AGAGACTTA', 'AAA')
end
def test_ignores_extra_length_on_other_strand_when_longer
skip
assert_equal 2, Hamming.compute('AGG', 'AAAACTGACCCACCCCAGG')
end
def test_large_hamming_distance
skip
assert_equal 4, Hamming.compute('GATACA', 'GCATAA')
end
def test_hamming_distance_in_very_long_strand
skip
assert_equal 9, Hamming.compute('GGACGGATTCTG', 'AGGACGGATTCT')
end
end
END
你遇到了错误,这应该是应该的。 这是测试驱动开发的第一步 (TDD)过程。
错误最重要的部分是
cannot load such file
它正在寻找一个名为bob.rb的文件 还存在。
要修复错误,请创建一个名为bob.rb的空文件 在与bob_test.rb文件相同的目录中。
然后再次运行测试。
有关本练习的更多指导,请参阅 GETTING_STARTED.md。
答案 0 :(得分:0)
您正在调用类方法Hamming.compute('A', 'A')
。这种方法没有定义。
compute
方法是一种实例方法(您需要执行Hamming.new.compute
)。这个定义应解决这两个问题:
class Hamming
def self.compute(x, y)
end
end