开玩笑单元测试 - 即使我已经测试过功能,我还要重复测试吗?

时间:2018-04-17 00:54:24

标签: javascript unit-testing immutability jest immutable.js

我有一个Range类,其中包含一个startOffset和一个endOffset,如下所示:

class Range extends Immutable.Record({ startOffset: 0, endOffset: 0 }) {
  // ...
}

然后我有一个RangeList类,其中包含一系列范围:

class RangeList extends Immutable.Record({
  ranges: Immutable.List.of(Range()),
  focusedRangeIndex: 0
}) {

  addRange(range) {
    return this.setRanges(this.ranges.push(range))
  }

  setRanges(ranges) {
    return this.set('ranges', ranges).simplify()
  }

  // merges any overlapping ranges
  simplify() {

  }

  // ...
}

现在,我已经设置了单元测试,并且我对simplify函数进行了测试:

describe('simplify', () => {
  const r = (a, b) => Range({ anchorOffset: a, focusOffset: b })

  describe('when there are no overlapping ranges', () => {
    it('returns itself', () => {
       // ...
    })
  })

  describe('when there are overlapping ranges', () => {
    it('merges the overlapping ranges (...)', () => {
      // ...
    })

    it('sets the focused range index to the index of the new range which contains the old focused range', () => {
      // ...
    })
  })
})

simplify函数上的测试是~300 LOC。

现在我的问题是我有~6种其他方法可以计算某些内容然后返回一个新范围并使用simplify方法来简化它。由于simplify测试本身约有300行代码,我不想在另一个~6方法上重复这个,因为那时.test会太长,我觉得重复一堆这样的代码并不好。 (例如,当你创建一个范围时,它会自动简化它,当你调用setRanges时,它会做同样的事情,这会使测试几乎相同)。

所以如果有更好的方法来测试所有~6种其他方法(只调用我已经测试过的simplify方法),那么我就是在游荡,自动简化结果? (例如,测试他们做的最后一件事是调用简化方法)。

0 个答案:

没有答案