首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在supertest中使用jest模拟模块?

如何在supertest中使用jest模拟模块?
EN

Stack Overflow用户
提问于 2017-08-28 16:57:42
回答 1查看 1.3K关注 0票数 3

伙计们!

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

这是我的server.js

代码语言:javascript
复制
// server.js
const config = require('./lib/config')
...
const app = new koa()
...
module.exports = app

我想在使用Supertest时模拟config.js,这是我的server.test.js

代码语言:javascript
复制
// 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

EN

回答 1

Stack Overflow用户

发布于 2017-08-28 20:24:21

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45915261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档