Jest测试未通过任何参数(成为'undefined')

问题描述 投票:0回答:1

我有一个测试我的API的笑话文件:

'use strict';

const request = require('supertest');
const app = require('./index');

describe('Test login', () => {
  test('POST /login', () => {
        return request(app)
             .post('/login')
             .send({username: 'preset1'})  //suggestion by @acincognito
             .expect(301)

    });

});

以及我的nodejs文件中的相应POST路由(“ index.js”)

...

function contains(arr, key, val) {
    for (var i = 0; i < arr.length; i++) {
        if(arr[i][key] === val) {
            return true
        }; 
    }
    return false;
}

app.post("/login", async (req, res) => {
    try {
      var username = req.body.username;
      const data = await readFile("results.json");
      var json = JSON.parse(data);
      if (contains(json, "name", username) === true){

         ...

         return res.redirect(301,"/");
       } else{
         return res.redirect(401,"/");
       }
    } catch (error) {
        return res.redirect("/");
    }
  });

JSON文件(“ results.json”)具有以下格式:

[
  {"name":"preset1","otherstuff":[]},
  ...
  {"name":"preset5","otherstuff":[]}
]

我收到错误消息:

expected 301 "Moved Permanently", got 401 "Unauthorized"

NOTE:当我在本地服务器上手动运行代码时,一切正常运行,这似乎与测试的输出相矛盾。

EDIT:由于某些原因,变量username变为undefined。我也尝试传递其他变量,但是在console.log()中,它们都没有出现。

我有一个测试我的API的笑话文件:“严格使用”; const request = require('supertest'); const app = require('./ index'); describe('Test login',()=> {test('POST / login',()=> {...

javascript node.js testing jestjs supertest
1个回答
1
投票

向您的console.log(json)函数添加app.post以查看要解析的内容。

© www.soinside.com 2019 - 2024. All rights reserved.