为什么我的测试中没有更新commentCount?

时间:2017-02-04 19:32:59

标签: javascript node.js express mocha supertest

我有Post模型和Comment模型。当用户发布评论时,postID将作为参数发送。

保存评论后,它的id将被推送到属于帖子的comments数组中。

Post模型的commentCount是一个虚拟属性,它会计算comments数组中有多少个注释ID。

这是我的评论控制器:

  create(req, res, next) {
    const commentProps = req.body;
    const postId = req.params.id;

    Comment.create(commentProps)
      .then(comment => {
        Post.findById({ _id: postId })
          .then(post => {
            console.log(post);
            console.log('comment id is ' + comment._id);

            post.comments.push(comment._id);

            console.log(post);
            console.log('commentCount is ' + post.commentCount);
          });
        return res.send(comment);
      })
      .catch(next);
  },

所有日志都应该正常运行。 comment._id被推入comments数组,commentCount已增加1

然而我的测试断言没有通过:

it('POST to /api/comments/:id creates a new comment and increases posts commentCount', done => {
    const post = new Post({
      author: user._id,
      text: 'This is a post',
      createdAt: 0,
      expiresAt: 0,
      voteCount: 0
    });

    post.save()
      .then(() => {
        Comment.count().then(count => {
          request(app)
            .post(`/api/comments/${post._id}`)
            .send({
              author: user._id,
              text: 'This is a comment',
              createdAt: 0,
              postId: 'randomPost'
            })
            .end(() => {
              Comment.count().then(newCount => {
                console.log('Comment count is ' + post.commentCount);

                assert(count + 1 === newCount);
                assert(post.commentCount === 1);

                done();
              });
            });
        });
      });
  });

上面测试中的日志返回0,如果我记录post.comments,那么它就会以空数组的形式返回。

知道我在这里做错了什么?

谢谢!

0 个答案:

没有答案