0

我是一名新手程序员,目前正在使用 Javascript 编写罗马数字 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 规范中删除重复项的最佳方法是什么?谢谢!

4

1 回答 1

0

你应该像这样定义你的罗马数字对象

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

然后你可以做

_.each(numerals, function(value, key) {
    it('returns '+value+' for '+key, function () {
        expect(roman(key)).toEqual(value);
    });
});
于 2014-01-28T16:28:35.300 回答