如何在mocha和mongoDB中使用chai对节点发出POST请求。 我有一个包含我的get请求和post请求的测试文件。我下面的代码等于我的get请求,它通过我设置的1测试,但是我在创建我的帖子请求时遇到了麻烦,我不明白我应该做什么。 GET请求:
const chai = require('chai');
const expect = chai.expect;
const chaiHttp = require('chai-http')
chai.use(chaiHttp)
describe('site', () => { // Describe what you are testing
it('Should have home page', (done) => { // Describe
// In this case we test that the home page loads
chai.request('localhost:3000')
chai.get('/')
chai.end((err, res) => {
if (err) {
done(err)
}
res.status.should.be.equal(200)
done() // Call done if the test completed successfully.
})
})
})
到目前为止,这是我的发布/创建路线:
此请求的伪代码为:
//检查回复是否成功
POST请求:
const chai = require('chai')
const chaiHttp = require('chai-http')
const should = chai.should()
chai.use(chaiHttp)
const Post = require('../models/post');
describe('Posts', function() {
this.timeout(10000);
let countr;
it('should create with valid attributes at POST /posts', function(done) {
// test code
Post.find({}).then(function(error, posts) {
countr = posts.count;
let head = {
title: "post title",
url: "https://www.google.com",
summary: "post summary"
}
chai.request('localhost:3000')
chai.post('/posts').send(head)
chai.end(function(error, res) {
//console.log('success')
})
}).catch(function(error) {
done(error)
})
});
})
任何关于我做错事的指示都表示赞赏。我输出的错误是:
1)帖子 应该在POST /帖子上返回一个新帖子: 错误:超出10000毫秒的超时。对于异步测试和挂钩,请确保" done()"叫做;如果退回承诺,请确保它得到解决。
npm ERR!代码ELIFECYCLE
错误的ERR!错误1
错误的ERR! reddit_clone@1.0.0 test:mocha
答案 0 :(得分:0)
测试超时,因为请求永远不会发送。
基于docs我没有看到任何暗示您可以通过简单地将数据传递到chai
.request('http://localhost:3000')
.post('/posts')
.send(head)
.end((err, res) => {
...
});
函数来执行帖子的内容。这里需要对图书馆做出很多假设,例如:序列化类型,标题等。
使用JSON有效负载执行POST请求的正确方法是:
{{1}}