node.js - 如何测试通过模拟从 express 调用的路由处理程序

标签 node.js express testing jestjs

我正在使用 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/

相关文章:

node.js - 回送在 modelName.afterRemoteError 上给出未定义

javascript - 链式获取 Promise(JSON、React、Webpack、NodeJS)

javascript - JS 认为函数未定义,即使它明显存在

javascript - 在 Node.js (Express) 中提取请求数据时遇到问题

android - 机器人 : getCurrentViews() Null pointer exception

node.js - vue socket.io 连接尝试返回 "No ' Access-Control-Allow-Origin' header 存在”即使已设置源也会出现错误

jQuery AJAX 调用 Express (nodejs) 框架上的 Passportjs 登录

java - 如何测试持久层?

java - Selenium,Java - 如何使用文本单击元素?

node.js - npm install 无法在具有 git 依赖项的 Windows 上运行