我正在使用node / express / mongo并尝试运行测试来查找具有特定ID的帖子。
这是我的路线:
app.get('/api/posts/:id', PostController.getPost);
这是控制器:
getPost(req, res, next) {
const postId = req.params.id;
Post.findById({ _id: postId })
.then(user => res.send(user))
.catch(next);
},
这是测试:
describe('Post Controller', () => {
it('find a post with a particular id', (done) => {
const post = new Post({
text: 'This is a post',
voteCount: 0,
commentCount: 0,
createdAt: 0,
expiresAt: 0
});
post.save().then(() => {
console.log(post._id);
request(app)
.get(`api/posts/${post._id}`)
.set('Accept', 'application/json')
.expect(200)
.end((err, res) => {
console.log(res);
if (err) return done(err);
//assert(response.body.obj.firstName === 'Matt');
done();
});
});
});
post._id
正在进行控制台记录。
响应只是记录为null
。
return done(err)
正在回复Error: ECONNREFUSED: Connection refused
我知道路线正常工作,因为postman
就好了。知道为什么它可能会失败吗?
我的所有其他测试都运行得很好,例如:
it('POST to /api/posts creates a new post', done => {
Post.count().then(count => {
request(app)
.post('/api/posts')
.send({
text: 'This is a post',
voteCount: 0,
commentCount: 0,
createdAt: 0,
expiresAt: 0
})
.end(() => {
Post.count().then(newCount => {
assert(count + 1 === newCount);
done();
});
});
});
});
请感谢一些帮助!
答案 0 :(得分:0)
检查你的获取请求,你正在使用:ud但你的参数是req.params.id
答案 1 :(得分:0)
已修复,错过了/
:.get(
api / posts / $ {post._id} )