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

javascript tdd jestjs

53 观看

3回复

1 作者的声誉

我是单元测试和TDD方法的新手,所以请您帮我一下。

function calculate(a, b) {
    var sum = a + b;
    var sub = a - b;
    return { sum: sum, sub: sub };
}
作者: Niranjan Kc 的来源 发布者: 2017 年 9 月 15 日

回应 3


1

56132 作者的声誉

开玩笑,你可以这样:

describe('calculation', ()=> {
  let result
  beforEach(()=>{
    result = calculate(2, 3)
  })
  it('returns the correct sum', (){
    expect(result.sum).toBe(5)
  })
  it('returns the correct sub', (){
    expect(result.sub).toBe(-1)
  })
})
作者: Andreas Köberle 发布者: 2017 年 9 月 15 日

1

2137 作者的声誉

it('checks calculations', function() {  
    var calculate = require('./example.js');
    expect(calculate(1, -1).sum).toBe(0);
    expect(calculate(1, -1).sub).toBe(2); 
});

将文件另存为.js并使用npm test。我假设您正在使用jestjs。当然,您可以根据对功能的了解添加其他测试条件。

作者: Yash 发布者: 2017 年 9 月 15 日

0

110823 作者的声誉

这里有一个非常不同的答案:手动测试此类代码的巨大问题是,很难说出何时编写涵盖不同情况的足够测试。

这里有一种替代方法:您可以退后一步,而不是仅指定预期结果,并确定被测方法应遵守的合同

然后,您使用一种基于快速检查的框架,例如JSVerify。您将这些规则提供给工具-然后该工具将创建随机数据并运行测试用例。在发现违反合同的情况下,它将尝试“最小化”测试输入-这样,最终您会收到一条消息:“当您使用此数据x,y,z时,违反规则A”。

与“常规” TDD和单元测试相比,这是一种非常不同的方法,但是特别是对于这种功能,它可能是一件非常有效的附加工作。

作者: GhostCat 发布者: 2017 年 9 月 15 日
32x32