You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为含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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:24:38