【问题标题】:Mocking a function in a jest environment file在 jest 环境文件中模拟函数
【发布时间】:2021-10-23 02:31:01
【问题描述】:

我想在所有测试之间共享一个服务器,为此我创建了文件 server-environment.js

const NodeEnvironment = require('jest-environment-node')
const supertest = require('supertest')

//A koa server
const { app, init } = require('../src/server')

class ServerEnvironment extends NodeEnvironment {
  constructor(config, context) {
    super(config, context)
    this.testPath = context.testPath
  }

  async setup() {
    await init
    this.server = app.listen()
    this.api = supertest(this.server)
    this.global.api = this.api
  }

  async teardown() {
    this.server.close()
  }
}

module.exports = ServerEnvironment

问题是我想模拟一些服务器路由使用的中间件,但我真的找不到办法做到这一点。如果我尝试在文件中的任何位置声明 jest.mock ,则会收到未定义 jest 的错误。如果我在实际测试文件中模拟该函数,全局将不会使用它。不确定 Jest 是否可以做类似的事情?

【问题讨论】:

    标签: node.js unit-testing jestjs


    【解决方案1】:

    我遇到了同样的问题,并通过添加 setupFilesAfterEnv 解决了它。

    jest.config.js:

    module.exports = {
        ...
        setupFilesAfterEnv: [
            './test/setupMocks.js'
        ]
        ...
    };
    

    测试/setupMocks.js

    jest.mock('path/to/api', () => global.api);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-27
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 2022-06-29
      • 2021-04-19
      • 1970-01-01
      相关资源
      最近更新 更多