【问题标题】:How to make Dotenv and Nock work together?如何让 Dotenv 和 Nock 协同工作?
【发布时间】:2020-01-17 03:43:18
【问题描述】:

目前在我的一个应用程序中,我正在使用 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

【问题讨论】:

  • 不太清楚你在问什么,你能提供最少的代码来重现这个问题吗?
  • @KrzysztofKrzeszewski 在我的 demo.test.js 中 require('dotenv'); .....如果我 nock('example.com')....some 代码它不起作用。
  • 恐怕我无法访问您的demo.test.js,而且我不知道它的内容是什么。最重要的是,我很确定这个文件可能不足以重现问题
  • @OmarFaruqueSohag,恐怕我们仍然缺少一些相关代码。您通过require('dotenv').config() 语句加载的配置是什么? demoCallToMainFileMetho 方法中执行的调用是什么?
  • require('dotenv').config() 有助于显示 process.env 变量,因为这些变量正在其他文件中使用。 @mgarcia

标签: javascript nock dotenv


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2017-11-15
    • 2020-01-13
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多