【问题标题】:How to unit test this function using TDD?如何使用 TDD 对该功能进行单元测试?
【发布时间】:2018-02-25 06:03:12
【问题描述】:

当函数在类和单元测试中时,函数计算它会给我一些错误。如何使用 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 运行所有测试套件。 npm 错误!测试失败。有关详细信息,请参见上文。

【问题讨论】:

  • ● 计算 › 两个数字的正确总和是 TypeError: Cannot read property 'sum' of undefined at Object. (__tests__/calculation.test.js:8:14) at tryCallTwo (node_modules /promise/lib/core.js:45:5) 在 doResolve (node_modules/promise/lib/core.js:200:13) 在新 Promise (node_modules/promise/lib/core.js:66:3) 在 tryCallOne (node_modules/promise/lib/core.js:37:12) 在 node_modules/promise/lib/core.js:123:15 ● 计算 › 两个数的正确减法是
  • 运行命令 npm test 然后它给出这样的错误。我将包括上面的所有文件。 @尼古拉斯大厦。
  • 在更改 result.sum1 和 result.sub1 后出现同样的错误。 @尼古拉斯大厦
  • 不要将更多信息放入 cmets。始终更新您的问题。或者你能读一下你在第一条评论中写下的内容吗?
  • 感谢@GhostCat 的建议。

标签: javascript tdd jestjs


【解决方案1】:

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

您不使用 TDD 测试某些东西,而是使用它构建一些东西。

我推荐这个excellent article on TDD. 我认为它会解决问题。

【讨论】:

    猜你喜欢
    • 2019-07-06
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2021-10-12
    相关资源
    最近更新 更多