Express 如何使用摩卡和柴特快路线进行测试

Express 如何使用摩卡和柴特快路线进行测试,express,mocha.js,chai,Express,Mocha.js,Chai,我正在开发一个express应用程序,它可以通过过滤数据呈现视图 我目前的路线是: router.get('/user/name/:name', (req, res) => { return serverUtil.getUserByName(req.params.name).then(success =>{ res.render('partials/users/user', {user: success}); }).catch(err =>{

我正在开发一个express应用程序,它可以通过过滤数据呈现视图

我目前的路线是:

router.get('/user/name/:name', (req, res) => {
    return serverUtil.getUserByName(req.params.name).then(success =>{
        res.render('partials/users/user', {user: success});
    }).catch(err =>{
        res.render('partials/users/user', {error: err});
    });
});
正如您在上面看到的,我正在发送res.render,但我不知道如何测试它

我的摩卡咖啡测试目前如下:

  it('Should post to user/name/:name', function(done){
    chai.request('http://localhost:5050')
      .get('/user/name/Britney')
      .end((err, res) => {
          console.log("res ", res.body); // empty
          exp(res).to.be.a('object');
          done();
        });
  });
但如果我改变路线:

router.get('/user/name/:name', (req, res) => {
    return serverUtil.getUserByName(req.params.name).then(success =>{
        res.send({user: success}); //Change this
    }).catch(err =>{
        res.render('partials/users/user', {error: err});
    });
});
测试按预期工作,但应用程序未按预期工作


那么我如何用res.render和我传递的数据测试路由呢?

最后我解决了我的问题

首先需要使用cheerio来实现这一点。因此,在res参数at.end回调中,我得到res.text中的HTML。我在res.body中查找错误代码为:

  it('Should post to user/name/:name', function(done){
    chai.request('http://localhost:5050')
      .get('/user/name/Britney')
      .end((err, res) => {
          res.should.have.status(200);

          exp(res).to.be.a('object');

          let $ = cheerio.load(res.text);
          let textid = $('#textid').val(); //the id of my id field

          exp(textid).to.have.equal('a0ece5db-cd14-4f21-812f-966633e7be86'); //true
          done();
        });
  });