人!
我正在使用Jest和Supertest来测试我的节点服务器代码。
这是我的server.js
// server.js
const config = require('./lib/config')
...
const app = new koa()
...
module.exports = app
我想在使用Supertest时模拟config.js
,这是我的server.test.js
// 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)
})
})
我在运行测试时在config
打印了server.js
,但打印信息显示jest.mock
无效(lib/config
的路径正确)。
任何人都知道在这种情况下使用Supertest嘲笑config.js
答案 0 :(得分:1)
Jest似乎解析路径,因此您在模拟时提供的路径必须保持一致:如果./lib/config
位于server.test.js
旁边,则应为server.js
。如果文件位于不同的位置,则需要相应地构造路径,例如
../src/lib/config
如果你的server.js在src文件夹中,server.test.js位于src旁边的test文件夹中