I am doing a Ruby exercise on exercism- my first since doing codecademy. and the set up is that i have two files in the same folder- hamming_test.rb that requires_relative hamming.rb-- i got that far, but no farther. i have set up an empty class with an empty method in hamming.rb, but when hamming_test.rb runs and gets to the first method call, it returns a NoMethodError for that line. I suspect that the code is okay (as far as it goes), but the problem is about something in my computer setup. I have tried running it from TextEdit and the console and from within NetBeans: same error. I have tried all sorts of things, but always the same error- it's like the interpreter can find the file, but can't see inside it. I have a Mac running Yosemite, and Ruby seems to run okay otherwise. I can't even seem to get out of the gate with this, please help. Code below, in case that helps:
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
You got an error, which is exactly as it should be. This is the first step in the Test-Driven Development (TDD) process.
The most important part of the error is
cannot load such file
It's looking for a file named bob.rb that doesn't exist yet.
To fix the error, create an empty file named bob.rb in the same directory as the bob_test.rb file.
Then run the test again.
For more guidance as you work on this exercise, see GETTING_STARTED.md.
You are calling a class method
Hamming.compute('A', 'A')
. Such a method is not defined.compute
method is an instance method (you'd need to doHamming.new.compute
).This definition should fix both issues: