ECONNREFUSED:连接被拒绝。为什么?所有其他测试都在通过

时间:2017-02-04 13:53:31

标签: javascript node.js mongodb express mocha

我正在使用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();
      });
    });
});

});

请感谢一些帮助!

2 个答案:

答案 0 :(得分:0)

检查你的获取请求,你正在使用:ud但你的参数是req.params.id

答案 1 :(得分:0)

已修复,错过了/.get( api / posts / $ {post._id} )