摩卡+柴-没有错误的详细信息

时间:2018-09-02 19:27:29

标签: node.js express testing mocha chai

我对摩卡咖啡和柴有问题。我的测试未显示失败测试的错误(例如,预期“ a”为“ b”)。 test log

1) Shouldn't publish new post - there is a post with this title
npm ERR! Test failed.  See above for more details.

示例代码:

it('Shouldn\'t publish new post - some required fields are empty', done => {
        request(app)
          .post('/posts')
          .set('Authorization', `Bearer ${token}`)
          .send()
          .end((err, { body }) => {
            if(err) {
              return done(err);
            }

            expect(body).to.have.property('errors');

            return done();
          });
      });

我认为问题不仅仅在于摩卡咖啡或柴。我的仓库:github repository

您需要做的就是克隆仓库,安装依赖项并运行mongodb。随意创建虚假测试并查看输出。

最好的问候

1 个答案:

答案 0 :(得分:0)

问题在于,由于嵌套的回调,无法始终如一地处理错误。如果expect(body)...断言失败,则将导致异步错误,该错误永远不会用done(error)报告给当前测试,因此所有异步Chai断言都应该用try..catch包装。

更好的方法是使用Mocha原生支持的承诺so does Supertest。这样可以始终处理错误,而无需进行done回调:

  it('Shouldn\'t publish new post - outdated/wrong token', async () => {
    const { body } = await request(app)
      .post('/posts')
      .set('Authorization', 'Bearer blah_blah_blah')
      .send();

    expect(body).to.have.property('errors');
  });