Рефакторинг спецификаций Javascript для римской числовой каты

Я начинающий программист, в настоящее время работаю над римскими цифрами ката в Javascript. Я решил это на все спецификации (я использую Жасмин) проходят. Тем не менее, у меня много дублирования в моих спецификациях. Вот только первые два:

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')
  })

 })

В Ruby я мог решить проблему, выполнив что-то вроде этого:

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{ 

  }) 

Каков наилучший способ удалить дубликаты из моей спецификации Javascript? Спасибо!

1 ответ

Вы должны определить свой объект римскими цифрами так

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

и тогда вы можете сделать

_.each(numerals, function(value, key) {
    it('returns '+value+' for '+key, function () {
        expect(roman(key)).toEqual(value);
    });
});
Другие вопросы по тегам