因此,过去我实际上从未在所有项目中实施过任何测试,因此决定在我正在从事的新项目中开始实施它。作为一个初学者,我对我得到的输出有些困惑。
当我使用邮递员时。它不会返回500错误,而是将信息保存到后端。我在运行测试时遇到的错误是
1) POST /users
Creates a new user:
Error: expected 200 "OK", got 500 "Internal Server Error"
我还将显示代码的外观,以期找出我要去哪里。
//测试
var express = require("express");
var request = require("supertest");
var app = express();
let router = require("../../server/routes/api/users");
app.use(router);
describe("GET /test", function() {
it("Returns a json for testing", function(done) {
request(app)
.get("/test")
.set("Accept", "application/json")
.expect("Content-Type", /json/)
.expect(200, done);
});
});
describe("POST /users", () => {
let data = {
name: "dummy",
email: "dummy@dummy.com",
password: 123456
};
it("Creates a new user", done => {
request(app)
.post("/register")
.send(data)
.set("Accept", "application/json")
.expect("Content-Type", "text/html; charset=utf-8")
.expect(200)
.end(err => {
if (err) return done(err);
done();
});
});
});
//用户路由文件
router.post("/register", (req, res) => {
User.findOne({ email: req.body.email }).then(user => {
if (user) {
res.json({ msg: "User exist" });
} else {
const newUser = new User({
name: req.body.name,
email: req.body.email,
password: req.body.password
});
newUser
.save()
.then(user => console.log(user))
.catch(err => console.log(err));
}
});
});
//用户猫鼬模型文件
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
// Create Schema
const UserSchema = new Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now
}
});
module.exports = User = mongoose.model("users", UserSchema);
如果有其他我想念的地方,请您随意提出,并希望对测试有更好的了解。
答案 0 :(得分:0)
POST测试期望的响应与服务器发送的响应不匹配。 在POST测试中,将200更改为500并显示响应,然后您将看到预期的响应和服务器发送的响应,因此可以比较两者并进行更改。 有点像这样---
describe("POST /users", () => {
let data = {
name: "dummy",
email: "dummy@dummy.com",
password: 123456
};
it("Creates a new user", done => {
request(app)
.post("/register")
.send(data)
.set("Accept", "application/json")
.expect("Content-Type", "text/html; charset=utf-8")
.expect(response => {console.log(response)})
.expect(500,end);
});
});
现在比较预期的内容和服务器发送的内容。 并更改您的代码(在测试收到的响应中,大多数情况下,它是响应随附的数据库集合中的对象/文档ID),