jest:如何在一个文件中测试多个功能?

时间:2015-12-03 13:01:55

标签: javascript jestjs

有没有办法用jest测试一个文件中的多个函数?

ch03.js中的

var min = function(a, b) {
  if(a < b)
    return a
  else
    return b
}

// even/odd number checker

var isEven = function(number) {
  n = Math.abs(number);
  if (n==0)
    return true;
  else if (n==1)
    return false;
  else {
    return isEven(n-2);
  }
}

module.exports = isEven;

和我的测试文件: 在测试 /ch03-test.js

jest.dontMock('../ch03');

describe('min', function() {
  it('returns the minimum of two numbers', function() {
    var min = require('../ch03');
    expect(min(2, 3)).toBe(2);
    expect(min(22, 3)).toBe(3);
    expect(min(2, -3)).toBe(-3);
  });
});

describe('isEven', function() {
  it('checks if given number is even', function() {
    var isEven = require('../ch03');
    expect(isEven(0)).toBe(true);
    expect(isEven(-2)).toBe(true);
    expect(isEven(0)).toBe(true);
    expect(isEven(3)).toBe(false);
  });
});

我不希望每个小javascript函数都有单独的文件。 有没有办法在一个文件中测试多个函数?

1 个答案:

答案 0 :(得分:3)

您应该尝试rewire

当“要求”带有重新连接的模块时,它会为模块中的变量公开getter和setter,包括私有变量。

这样的事情应该有效:

jest.dontMock('../ch03');

var rewire = require('rewire');
var min = rewire('../ch03').__get__("min");

describe('min', function() {
  it('returns the minimum of two numbers', function() {
    expect(min(2, 3)).toBe(2);
    expect(min(22, 3)).toBe(3);
    expect(min(2, -3)).toBe(-3);
  });
});