如何使用TDD对此功能进行单元测试?

时间:2017-09-16 03:48:51

标签: javascript tdd jest

当函数在类和单元测试中时,函数计算它会给我一些错误。如何使用TDD测试计算函数?请帮帮我。

1.calculation.js

export default class calculation {
    static  calculate(a, b) {
        var sum1 = this.addition(a, b);
        var sub1 = this.subtract(a, b);
        return {
             sum1: sum1, 
             sub1: sub1
        };
    }
    static addition (a, b) {
        var sum = a + b;
        return sum;
    }
    static subtract (a, b) {
        var sub = a - b;
        return sub;
    }
}

2.calculation.test.js

const calculate = require('../app/calculation');
describe('calculation', () => {
    let result;
    beforeEach(() => {
        result = calculate.calculate(100, 50);
    });
    it('correct sum of two number is', () => {
        expect(result.sum1).toBe(150);
    });
    it('correct subtract of two number is', () => {
        expect(result.sub1).toBe(50);
    });

});

错误是......

●计算>正确的两个数之和

TypeError: Cannot read property 'sum1' of undefined

  at Object.<anonymous> (__tests__/calculation.test.js:8:14)
  at tryCallTwo (node_modules/promise/lib/core.js:45:5)
  at doResolve (node_modules/promise/lib/core.js:200:13)
  at new Promise (node_modules/promise/lib/core.js:66:3)
  at tryCallOne (node_modules/promise/lib/core.js:37:12)
  at node_modules/promise/lib/core.js:123:15

●计算>正确减去两个数字

TypeError: calculate.calculate is not a function

  at Object.<anonymous> (__tests__/calculation.test.js:5:18)
  at tryCallTwo (node_modules/promise/lib/core.js:45:5)
  at doResolve (node_modules/promise/lib/core.js:200:13)
  at new Promise (node_modules/promise/lib/core.js:66:3)
  at tryCallOne (node_modules/promise/lib/core.js:37:12)
  at node_modules/promise/lib/core.js:123:15

●计算>正确减去两个数字

TypeError: Cannot read property 'sub1' of undefined

  at Object.<anonymous> (__tests__/calculation.test.js:11:14)
  at tryCallTwo (node_modules/promise/lib/core.js:45:5)
  at doResolve (node_modules/promise/lib/core.js:200:13)
  at new Promise (node_modules/promise/lib/core.js:66:3)
  at tryCallOne (node_modules/promise/lib/core.js:37:12)
  at node_modules/promise/lib/core.js:123:15

计算     ✕两个数的正确和是(3ms)     ✕正确减去两个数是(1ms)

测试套房:1次失败,共1次 测试:2次失败,共2次 快照:总共0 时间:0.818s,估计1s 跑完所有测试套件。 错误的ERR!测试失败。有关详细信息,请参见上文。

1 个答案:

答案 0 :(得分:0)

我认为你问的是错误的问题。 测试驱动开发是一个开发过程。

你没有用TDD测试一些东西,你使用它构建一些东西。

我推荐这个excellent article on TDD.我认为它会让事情变得清晰。