首页 > 解决方案 > 如何让 Dotenv 和 Nock 协同工作?

问题描述

目前在我的一个应用程序中,我正在使用 nock 来模拟我的 api 请求。不幸的是,在同一个项目的另一个测试文件中,我使用了 dotenv。如果我使用 dotenv,我的 nock 没有模拟 url,它使用的是原始 api 请求。任何建议或帮助表示赞赏。 我的测试文件

'use strict';

const assert = require('assert');
const nock = require('nock');

describe('example', () => {
  afterEach(async() => {
    nock.cleanAll();
  });

  describe("checktest", () => {

    it("checksomeupdate", async() => {
      nock('http://example.com')
        .get('/demend-point')
        .reply(200, {
          x: 1
        })

      const result = await demoCallToMainFileMetho();
      const [a, b] = result || []; // response array [1,2,3]
      assert.ok(a.includes('1'));
    });
  });
});

我在测试目录中的其他文件

require('dotenv').config();
.....some code

标签: javascriptnockdotenv

解决方案


我的问题已解决。解决方案:我必须从我的脚本中删除 dotenv 包。我需要的地方我必须替换为

process.env = Object.assign(process.env, 
    { DEMO_VARIABLE_ONE: 'false' },
    { DEMO_VARIABLE_ONE_URL: 'value' },
    { DEMO_VARIABLE_TWO: 'value' }
);


推荐阅读