我正在尝试测试一个函数,该函数具有多个if
语句和来自process.env
的变量。
我试图像这样在jest
中编写测试:
beforeEach(() => {
delete process.env.REACT_APP_API_KEY;
delete process.env.REACT_APP_URL;
});
it('no URL', () => {
process.env.REACT_APP_API_KEY = 'api_key';
try {
buildUrl(mockMethod, null);
} catch (err) {
expect(err.message).toBe('REACT_APP_API_KEY is not specified!');
}
});
it('no method', () => {
process.env.REACT_APP_URL = 'mock_url';
process.env.REACT_APP_API_KEY = 'api_key';
try {
buildUrl(mockMethod, null);
} catch (err) {
expect(err.message).toBe('REACT_APP_API_KEY is not specified!');
}
});
但是问题在于,每次测试后都不会删除变量。它们以某种方式被缓存,不再设置。
也许有人遇到了这个问题,并提供了一些解决问题的技巧。
答案 0 :(得分:0)
我设法解决了问题,罪魁祸首是我在文件的上部解构了process.env
值-而不是函数本身+我正在重命名它们。
const buildUrl = (method: string, page: number = 1): string => {
const { API_KEY, URL } = process.env;
//...
// vs
const {
API_KEY: MY_API_KEY,
URL: MY_URL
} = process.env;
const buildUrl = (method: string, page: number = 1): string => {
const MY_API_KEY = ...