如何为if语句编写单元测试

时间:2018-03-17 18:41:01

标签: unit-testing jasmine mocha chai

我想为一个名为" fibb"的函数编写单元测试。使用摩卡,柴或茉莉。

app.js

fibb: function (n) {
  if(n==1) {
    return 1;
  } else {
    return (n * (n-1));
  }
}

test.js

var fibb = require("../app").fibb;
describe('App', function() {
  it('should be 20', function() {
    assert.equal(fibb(5), 20);
  });
});

这段代码适用于语句2(n*(n-1)),但我想写两种可能性(当'n == 1 and(n *(n-1))`语句时)。

1 个答案:

答案 0 :(得分:0)

每个测试用例应该只测试一个代码执行路径或代码分支,这样会很清楚。您的代码使用 if/else 语句。所以,有两个分支。不考虑边界值,至少需要写两个测试用例。

例如

app.js

const app = {
  fibb: function (n) {
    if (n == 1) {
      return 1;
    } else {
      return n * (n - 1);
    }
  },
};

module.exports = app;

app.test.js

var fibb = require('./app').fibb;
const { assert } = require('chai');

describe('App', function () {
  it('should be 20', function () {
    assert.equal(fibb(5), 20);
  });
  it('should be 1', () => {
    assert.equal(fibb(1), 1);
  });
});

测试结果:

  App
    ✓ should be 20
    ✓ should be 1


  2 passing (4ms)