首页 > 代码库 > 代码整洁之道——6、测试

代码整洁之道——6、测试

测试比发布更重要。如果你没有测试或者测试的不充分。那么你每次发布的时候都不能保证不出问题。你的团队决定测试的数量,但是拥有100%的测试覆盖度(所有的语句和分支)可以让你达到高度的自信和内心的平静。这意味着,除了有好的测试框架,你还需要使用好的覆盖率工具。

没有借口不写测试,有大量的JS测试框架,所以选择一个你们团队喜欢的。当你选择了一个测试框架后,接下来你们的目标是为每一个新的特性、模块写测试。如果你倾向于测试驱动开发,那就太好了,但是主要目标是确保发布或者重构一个新功能前,达到了测试覆盖率的目标。

一个测试一个概念(类似单一职责原则)

Bad:
import assert from ‘assert‘;

describe(‘MakeMomentJSGreatAgain‘, () => {
  it(‘handles date boundaries‘, () => {
    let date;

    date = new MakeMomentJSGreatAgain(‘1/1/2015‘);
    date.addDays(30);
    assert.equal(‘1/31/2015‘, date);

    date = new MakeMomentJSGreatAgain(‘2/1/2016‘);
    date.addDays(28);
    assert.equal(‘02/29/2016‘, date);

    date = new MakeMomentJSGreatAgain(‘2/1/2015‘);
    date.addDays(28);
    assert.equal(‘03/01/2015‘, date);
  });
});

Good:
import assert from ‘assert‘;

describe(‘MakeMomentJSGreatAgain‘, () => {
  it(‘handles 30-day months‘, () => {
    const date = new MakeMomentJSGreatAgain(‘1/1/2015‘);
    date.addDays(30);
    assert.equal(‘1/31/2015‘, date);
  });

  it(‘handles leap year‘, () => {
    const date = new MakeMomentJSGreatAgain(‘2/1/2016‘);
    date.addDays(28);
    assert.equal(‘02/29/2016‘, date);
  });

  it(‘handles non-leap year‘, () => {
    const date = new MakeMomentJSGreatAgain(‘2/1/2015‘);
    date.addDays(28);
    assert.equal(‘03/01/2015‘, date);
  });
});

 

代码整洁之道——6、测试