expect 未在 supertest-as-promised 中定义

expect is not defined in supertest-as-promised

当我使用波纹管代码时,显示的错误 expect is not defined(在 then 内部)

文档link

it("should return error", function () {
  return request(app).get("/verify")
    .expect(200)
    .then(function (res) {
      return expect(res.body.error[0].message).to.equal("NEW_CODE_REQUIRED");
    });
});

我该如何检查?

对文档有点疏忽,更不用说软件包中不包含独立的 expect 函数。

为此,您必须使用单独的包,例如 chai:

const expect = require('chai').expect;
...

我按照下面的流程解决了。添加了一个函数来检查预期错误,即 return 错误,如果得到意外值,这个函数从 .expect()

调用
function checkErrorMessage(res) { // this function throw error if got unexpected result
   if(res.body.error[0].message === 'NEW_CODE_REQUIRED') {
     return false; // return false means no error (got expected result)
   } else {
     return true; // return true means return error (got unexpected result)
   }
}

it("should return error", function () {
  return request(app).get("/verify")
    .expect(200)
    .expect(checkErrorMessage);
});