如何使用TDD对此函数进行单元测试?
我是单元测试和TDD方法的新手,所以请你帮助我。如何使用TDD对此函数进行单元测试?
function calculate(a, b) {
var sum = a + b;
var sub = a - b;
return { sum: sum, sub: sub };
}
有了开玩笑,你可以做这样的:
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)
})
})
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测试。 我假设你正在使用jestjs。 根据您对功能的理解,您绝对可以添加其他测试条件。
非常感谢@Yash。它的工作原理和我知道如何使用笑话测试单元功能的想法。 –
一个非常不同的答案在这里:与测试这样的代码巨大的问题手动是事实,这是很难说,当你写足够测试覆盖不同的情况。
这里有一种替代方法:不是只指定预期的结果,而是返回并确定要测试的方法应遵循的合同。
然后您使用其中一个基于quickcheck的框架,如JSVerify。您将这些规则指定给该工具 - 然后该工具会创建随机数据并运行测试用例。如果它发现违反合同,它会尝试“最小化”测试输入 - 这样你最终会收到一条消息:“当你使用这个数据x,y,z然后违反规则A”。
与“正常”的TDD和单元测试相比,它是一种非常不同的方法,但是对于这种类型的功能来说,它可能是一个非常有效的额外事情。
非常感谢@GhostCat的精彩建议。 –
非常欢迎。很显然,安德烈亚斯的回答将是你接受的第一选择......但是也许你记得这个答案 - 并且在你到达15代表的那一天,并且提高你回来的权利并且提高你得到的有用的东西。 – GhostCat
不错的优雅的例子...有我的投票;-) – GhostCat
非常感谢你@AndreasKöberle。它的工作原理和我知道如何使用笑话测试单元功能的想法。 –