如何为含if-else的fibb函数编写Mocha/Chai/Jasmine单元测试
完善fibb函数的单元测试(覆盖所有分支)
没问题,我来帮你把单元测试补全,让fibb函数的两个逻辑分支都被覆盖到。先回顾下你的函数逻辑:
- 当
n === 1时,返回1(if分支) - 当
n !== 1时,返回n * (n-1)(else分支)
你的现有测试只覆盖了else分支,只需要新增一个针对n=1的测试用例就可以啦,下面分别给出Mocha+Chai(兼容你现有代码风格)和Jasmine的实现:
一、Mocha + Chai(或Node原生assert)版本
你可以直接在现有test.js里新增一个测试用例,修改后的完整代码如下:
var fibb = require("../app").fibb; // 如果用Chai的assert,需要先引入:const assert = require('chai').assert; // 用Node原生assert的话就不用额外引入 describe('App', function() { // 测试if分支:n=1的情况 it('should return 1 when n is 1', function() { assert.equal(fibb(1), 1); }); // 测试else分支:n≠1的情况(保留你原有的测试用例) it('should return 20 when n is 5', function() { assert.equal(fibb(5), 20); }); });
二、Jasmine版本
如果用Jasmine来写,代码结构会稍微不同,完整测试代码如下:
const fibb = require("../app").fibb; describe('App', () => { it('returns 1 when n equals 1', () => { expect(fibb(1)).toBe(1); }); it('returns 20 when n equals 5', () => { expect(fibb(5)).toBe(20); }); });
这样两个测试用例就分别覆盖了函数的所有逻辑分支,运行测试时就能验证两种场景下函数的返回值是否符合预期啦。
内容的提问来源于stack exchange,提问作者Naresh Aithagoni
相关产品推荐
相关产品推荐

