2014-01-28 4 views
0

나는 자바 문자로 로마 숫자 카타 (Roman Numeral Kata)를 작업중인 초보 프로그래머입니다. 나는 모든 스펙 (나는 재스민을 사용하고있다)에서 그것을 풀었다. 그러나 필자의 스펙에는 많은 중복이있다.로마 숫자 카타르에 대한 자바 스크립트 사양 리팩토링

describe("RomanNumeral", function() { 

    it('returns I for 1', function() { 
    expect(roman(1)).toEqual('I') 
    }) 

    it('returns II for 2', function(){ 
    expect(roman(2)).toEqual('II') 
    }) 

}) 

루비에서 나는 이런 식으로 뭔가 수행하여 문제를 해결할 수 : 여기에 단지 처음 두 가지

describe Roman do 
[ 
    [1, 'I'], 
    [2, 'II'] 

].each do | natural_number, roman_numeral | 
    it "converts #{natural_number} to #{roman_numeral}" do 
     Roman.of(natural_number).should == roman_numeral 
    end 
    end 
end 

내가 배열 대신 해시를 사용하는거야을하지만 목표는 여전히 동일합니다. 해시를 반복하고, 각각을 호출하고, natural_number 변수를 설정하고, roman_numeral 변수를 설정 한 다음 해시에서 인수를 연결하여 각 사양을 실행하게하고 싶습니다.

하지만 지금은 모두 내가 가지고는

describe("RomanNumeral", function() { 

    var test_hash = {1, 'I'} 

    var someFunction 

    _.each(test_hash, someFunction{ 

    }) 

중복 내 자바 스크립트 사양을 형성 제거하는 가장 좋은 방법은 무엇입니까

입니까? 고맙습니다!

답변

0

당신은 너무

var numerals = { 
    1:'I', 
    2:'II' 
}; 

처럼 로마 숫자의 개체를 정의해야합니다 그리고 당신은

_.each(numerals, function(value, key) { 
    it('returns '+value+' for '+key, function() { 
     expect(roman(key)).toEqual(value); 
    }); 
}); 
+0

'key' 문자열 될 것입니다 할 수 있습니다. 나는 당신이'parseInt (key)'를'roman()'에 전달해야한다고 생각한다. – Florent

+0

Florent에게 코드 예제를 줄 수 있습니까? – user3245240

+0

효과가있었습니다. 대니 고마워! – user3245240

관련 문제