为什么 Postman 的响应是有效的,但我的测试不是?

Why is response coming through in Postman working but not my test?

我有这个 express controller 来查找用户接收的未读通知的数量。这里:

app.get('/api/user/:uid/notifications/newcount', (req, res, next) => {
    const firebaseUID = req.params.uid;

    User.findOne({ firebaseUID })
      .select('_id')
      .then(user => Notification.count({
          recipients: { $eq: user._id },
          usersRead: { $ne: user._id }
        })
      )
      .then(notificationCount => {
        console.log(notificationCount.toString());
        return res.send(notificationCount.toString())
      })
      .catch(next);
  });

这在邮递员中工作得很好。

我正在尝试使用 Mocha/Supertest 对其进行测试。然而由于某种原因,res.body 总是作为一个空对象返回。

实际控制器中的控制台登录总是正常的。

如果我没有在 res.send() 中作为 toString() 发送,那么我会收到错误消息。

res.body 应该会以 1 的形式回归。

如何在下面的测试中获取 res.body 以进行断言?

it.only('GET to /api/user/firebaseUID/notifications/newcount, gets users unread notifications',
  done => {
      request(app)
        .get(`/api/user/${matt.firebaseUID}/notifications/newcount`)
        .end((err, res) => {
          console.log(res.body);

          done();
        });
  });

谢谢!

superagent module that supertest is based on, the response.body property is only populated when the response can be parsed变成了Javascript对象。 response.text 属性 将把普通响应主体作为字符串包含在内。

看起来像 text property name follows from responseText in XMLHttpRequest