2014-11-14 2 views
0

나는 codecademy를 ​​시작한 이후로 운동에 대한 Ruby 연습을하고 있습니다. 그리고 설정은 동일한 폴더에 두 개의 파일이 있습니다 - hamming_test.rb 그 require_relative hamming.rb - 나는 멀리,하지만 더 멀리있어. hamming.rb에서 빈 메서드를 사용하여 빈 클래스를 설정했지만 hamming_test.rb가 실행되어 첫 번째 메서드 호출을하면 해당 행에 NoMethodError가 반환됩니다. 나는 그 코드가 괜찮다는 것을 의심하지 않는다. 그러나 문제는 내 컴퓨터 설정에 관한 것이다. TextEdit과 콘솔 및 NetBeans에서 실행하려고 시도했습니다. 동일한 오류가 발생했습니다. 나는 모든 종류의 것을 시도했지만, 항상 같은 오류가 있습니다. 그것은 인터프리터가 파일을 찾을 수는 있지만 내부에서 볼 수는없는 것과 같습니다. 요세미티를 실행하는 Mac이 있고 Ruby가 달리 실행되는 것처럼 보입니다. 나는 이것으로 문 밖으로 나올 수조차 없다. 제발 도와 줘. 코드는 아래의 경우에하는 데 도움이 :Ruby noob이 NoMethodError를 얻습니다.

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 (Test-Driven Development) (TDD) 프로세스의 첫 번째 단계입니다. 그것은하지 아직 존재하지라는 이름의 파일 bob.rb을 찾고

cannot load such file 

오류의 가장 중요한 부분입니다.

오류를 수정하려면 bob_test.rb 파일과 동일한 디렉토리에 bob.rb 이라는 빈 파일을 만듭니다.

그런 다음 테스트를 다시 실행하십시오.

이 연습에서보다 많은 지침을 보려면 GETTING_STARTED.md를 참조하십시오.


답변

0

Hamming.compute('A', 'A') 클래스 메서드를 호출하고 있습니다. 그러한 방법은 정의되지 않았다.

  1. 정의 된 compute 메서드는 인스턴스 메서드입니다 (Hamming.new.compute해야합니다).
  2. 제로 매개 변수 함수로 정의됩니다.

    class Hamming 
        def self.compute(x, y) 
        end 
    end 
    
    :

이 정의는 두 문제를 해결해야한다

관련 문제