【问题标题】:How to test a routing handler calling via mock from express如何测试通过 express 模拟调用的路由处理程序
【发布时间】:2019-05-29 14:09:24
【问题描述】:

我在 nodejs 中对我的一些代码进行单元测试,这些代码可以与 express 一起使用。 虽然看起来很明显,但我想测试我的路由是否调用了正确的处理函数。

我正在使用 jest 为处理函数创建一个模拟函数。 虽然我成功地尝试测试在另一个函数内部调用了一个函数,但我似乎无法测试从 post 的 express get 调用一个函数(处理程序)。 我们来看一个例子:

水果.js

function orange (req,res,next) {res.status(200)} ;
module.exports = {orange}

app.js

const fruits = require('./fruits')
const express = require('express');
const app = express();

app.get('/fruits', fruits.orange);

module.exports = { app };

当我试图(开玩笑地)测试对 /fruits 的 GET 请求(在 axios 模块的帮助下)正在调用 orange() 时,虽然实际上 orange() 有效,但它不会被保存为调用带有间谍封面的模拟功能封面。

如何测试从 GET 请求中调用了 orange() ?

【问题讨论】:

    标签: node.js express testing jestjs


    【解决方案1】:

    尝试将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)
     });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-14
      • 2017-12-11
      • 1970-01-01
      • 2017-01-25
      • 2018-06-18
      • 1970-01-01
      • 2019-04-13
      • 2015-05-10
      相关资源
      最近更新 更多