美文网首页
用 Jest 测试一切你想测试的

用 Jest 测试一切你想测试的

作者: Kenny锅 | 来源:发表于2020-04-02 17:51 被阅读0次

测试环境变量

mysql.ts

const MySQLConf = {
  development: {
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: 'root',
    database: 'local_db',
  },
  production: {
    host: 'www.jianshu.com',
    port: 3306,
    user: 'root',
    password: 'root',
    database: 'online_db',
  },
};
export default MySQLConf[process.env.NODE_ENV ?? 'development'];

mysql.spec.ts

describe('环境变量', () => {
  const OLD_ENV = process.env;

  beforeEach(() => {
    jest.resetModules();
    process.env = { ...OLD_ENV };
    delete process.env.NODE_ENV;
  });

  it('development', () => {
    process.env.NODE_ENV = 'development';
    const MySQLConf = require('./mysql').default;
    const expected = {
      host: 'localhost',
      port: 3306,
      user: 'root',
      password: 'root',
      database: 'local_db',
    };
    expect(MySQLConf).toEqual(expected);
  });

  it('production', () => {
    process.env.NODE_ENV = 'production';
    const MySQLConf = require('./mysql').default;
    const expected = {
      host: 'www.jianshu.com',
      port: 3306,
      user: 'root',
      password: 'root',
      database: 'online_db',
    };
    expect(MySQLConf).toEqual(expected);
  });
});

说明

每次执行一个it方法后执行(注:用 afterEach 方法也行,只是一个前后的问题)

多个测试有共享状态时,每次测试完成之后需要用 jest.resetModules() 重置模块 ,它会清空所有 required 模块的缓存,保证模块之间的隔离

相关文章

网友评论

      本文标题:用 Jest 测试一切你想测试的

      本文链接:https://www.haomeiwen.com/subject/myffphtx.html