Рефакторинг спецификаций 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);
});
});