测试

测试比发布更加重要。 如果你没有测试或者测试不够充分, 每次发布时你就不能确认没有破坏任何事情。
测试的量由你的团队决定, 但是拥有 100% 的覆盖率(包括所有的语句和分支)是你为什么能达到高度自信
和内心的平静。 这意味着需要一个额外的伟大的测试框架, 也需要一个好的覆盖率工具

没有理由不写测试。 这里有大量的优秀的 JS 测试框架
选一个适合你的团队的即可。 当为团队选择了测试框架之后, 接下来的目标是为生产的每一个新的功能/模
块编写测试。 如果你倾向于测试驱动开发(TDD), 那就太棒了, 但是要点是确认你在上线任何功能或者重
构一个现有功能之前, 达到了需要的目标覆盖率。

一个测试一个概念

不好的:

  1. const assert = require('assert');
  2. describe('MakeMomentJSGreatAgain', () => {
  3. it('handles date boundaries', () => {
  4. let date;
  5. date = new MakeMomentJSGreatAgain('1/1/2015');
  6. date.addDays(30);
  7. date.shouldEqual('1/31/2015');
  8. date = new MakeMomentJSGreatAgain('2/1/2016');
  9. date.addDays(28);
  10. assert.equal('02/29/2016', date);
  11. date = new MakeMomentJSGreatAgain('2/1/2015');
  12. date.addDays(28);
  13. assert.equal('03/01/2015', date);
  14. });
  15. });

好的:

  1. const assert = require('assert');
  2. describe('MakeMomentJSGreatAgain', () => {
  3. it('handles 30-day months', () => {
  4. const date = new MakeMomentJSGreatAgain('1/1/2015');
  5. date.addDays(30);
  6. date.shouldEqual('1/31/2015');
  7. });
  8. it('handles leap year', () => {
  9. const date = new MakeMomentJSGreatAgain('2/1/2016');
  10. date.addDays(28);
  11. assert.equal('02/29/2016', date);
  12. });
  13. it('handles non-leap year', () => {
  14. const date = new MakeMomentJSGreatAgain('2/1/2015');
  15. date.addDays(28);
  16. assert.equal('03/01/2015', date);
  17. });
  18. });