美文网首页
用 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