我有一个测试我的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',()=> {...
向您的console.log(json)
函数添加app.post
以查看要解析的内容。