2017-09-15 113 views

回答

1

有了开玩笑,你可以做这样的:

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) 
    }) 
}) 
+0

不错的优雅的例子...有我的投票;-) – GhostCat

+0

非常感谢你@AndreasKöberle。它的工作原理和我知道如何使用笑话测试单元功能的想法。 –

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。 根据您对功能的理解,您绝对可以添加其他测试条件。

+0

非常感谢@Yash。它的工作原理和我知道如何使用笑话测试单元功能的想法。 –

0

一个非常不同的答案在这里:与测试这样的代码巨大的问题手动是事实,这是很难说,当你写足够测试覆盖不同的情况。

这里有一种替代方法:不是只指定预期的结果,而是返回并确定要测试的方法应遵循的合同

然后您使用其中一个基于quickcheck的框架,如JSVerify。您将这些规则指定给该工具 - 然后该工具会创建随机数据并运行测试用例。如果它发现违反合同,它会尝试“最小化”测试输入 - 这样你最终会收到一条消息:“当你使用这个数据x,y,z然后违反规则A”。

与“正常”的TDD和单元测试相比,它是一种非常不同的方法,但是对于这种类型的功能来说,它可能是一个非常有效的额外事情。

+0

非常感谢@GhostCat的精彩建议。 –

+0

非常欢迎。很显然,安德烈亚斯的回答将是你接受的第一选择......但是也许你记得这个答案 - 并且在你到达15代表的那一天,并且提高你回来的权利并且提高你得到的有用的东西。 – GhostCat

相关问题