Javascript 如何使用jest模拟supertest中的模块??

Javascript 如何使用jest模拟supertest中的模块??,javascript,node.js,unit-testing,Javascript,Node.js,Unit Testing,伙计们 我使用Jest和Supertest来测试我的节点服务器代码 这是我的server.js // server.js const config = require('./lib/config') ... const app = new koa() ... module.exports = app // server.test.js const supertest = require('supertest-as-promised') describe('xxxxxx', ()=>{

伙计们

我使用Jest和Supertest来测试我的节点服务器代码

这是我的
server.js

// server.js
const config = require('./lib/config')
...
const app = new koa()
...
module.exports = app
// server.test.js
const supertest = require('supertest-as-promised')
describe('xxxxxx', ()=>{
  let app,server
  beforeEach(()=>{
    jest.mock('lib/config',()=>({
      uri: '/path',
      apiPrefix: '/prefix'
    }))
    app = require('server')
  })

  afterEach(()=>{
    server && server.close()
    app=null
    server=null
  })

  it('should success', async ()=>{
    server || (server = app.listen(0))
    const request = supertest(server)
    request().get('path/prefix_home').expect(200)
  })
})
当我使用Supertest时,我想模拟
config.js
,这是我的
server.test.js

// server.js
const config = require('./lib/config')
...
const app = new koa()
...
module.exports = app
// server.test.js
const supertest = require('supertest-as-promised')
describe('xxxxxx', ()=>{
  let app,server
  beforeEach(()=>{
    jest.mock('lib/config',()=>({
      uri: '/path',
      apiPrefix: '/prefix'
    }))
    app = require('server')
  })

  afterEach(()=>{
    server && server.close()
    app=null
    server=null
  })

  it('should success', async ()=>{
    server || (server = app.listen(0))
    const request = supertest(server)
    request().get('path/prefix_home').expect(200)
  })
})
运行测试时,我在
server.js
中打印了
config
,但打印信息显示
jest.mock
不起作用(
lib/config
的路径正确)


任何人都有在这种情况下使用Supertest模拟
config.js
的想法???

Jest似乎可以解析路径,因此模拟时提供的路径必须一致:如果
server.test.js
位于
server.js
旁边,则应该是
/lib/config
。如果文件位于不同的位置,则需要相应地构造路径,例如。
。/src/lib/config

如果server.js位于src文件夹中,而server.test.js位于
server.js
中src

旁边的test文件夹中,则需要
/lib/config
和test
lib/config
,这不是严格相等的字符串。问题可能就在这里