我是一名新手程序员,目前在Javascript中使用Roman Numeral Kata。我已经解决了所有规格(我正在使用Jasmine)正在传递。但是,我的规格中有很多重复。这里只是前两个:
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规范中删除复制形式的最佳方法是什么?谢谢!
答案 0 :(得分:0)
你应该像这样定义你的罗马数字对象
var numerals = {
1:'I',
2:'II'
};
然后你可以做
_.each(numerals, function(value, key) {
it('returns '+value+' for '+key, function () {
expect(roman(key)).toEqual(value);
});
});