我正在使用 express 在 nodejs 中对我的一些代码进行单元测试。 虽然这看起来很明显,但我想测试我的路由是否调用了正确的处理程序函数。
我正在使用 jest 为处理函数创建模拟函数。 虽然我成功地尝试测试一个函数在另一个函数中被调用,但我似乎无法测试一个函数(处理程序)是从 post 的 express get 中调用的。 让我们看一个例子:
水果.js
function orange (req,res,next) {res.status(200)} ;
module.exports = {orange}
应用程序.js
const fruits = require('./fruits')
const express = require('express');
const app = express();
app.get('/fruits', fruits.orange);
module.exports = { app };
当我尝试( Jest )测试对/fruits 的 GET 请求(在 axios 模块的帮助下)正在调用 orange() 时,虽然实际上 orange() 有效,但它不会被保存为调用带有 spy 封面的模拟函数封面。
我如何测试 orange() 是否已从 GET 请求中调用?
最佳答案
尝试使用 supertest开 Jest
const app = require('../app') //path to app.js
const request = require('supertest')
test('Upload Info Endpoint', async() => {
await request(app).get('/fruits')
.expect(resp.body.field).toMatch(mocked_field_value)
});
关于node.js - 如何测试通过模拟从 express 调用的路由处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56350877/