Mocha:未捕获的 AssertionError:预期 200 为 404

Posted

技术标签:

【中文标题】Mocha:未捕获的 AssertionError:预期 200 为 404【英文标题】:Mocha: Uncaught AssertionError: expected 200 to be 404 【发布时间】:2015-12-19 07:59:49 【问题描述】:

我正在尝试测试随机 urr。哪个不退出。所以响应代码应该是 404 但它返回 200,这使得测试用例失败,直到这里很好但它给出了 Uncaught AssertionError: expected 200 to be 404 如何处理这个 未捕获的断言错误

it("Should return 404 when you put random url after /api/random", function(done)    

            server
            .post("/api/random")
            .expect(404)
            .end(function(err, res)
              res.status.should.equal(404);
              done();
            )        
  );

未捕获的 AssertionError 如何处理..

 Uncaught AssertionError: expected 200 to be 404
      + expected - actual

      -200
      +404

      at Assertion.fail (node_modules/should/lib/assertion.js:180:17)
      at Assertion.prop.value (node_modules/should/lib/assertion.js:65:17)
      at Test.<anonymous> (test.js:48:33)
      at Test.assert (node_modules/supertest/lib/test.js:156:6)
      at assert (node_modules/supertest/lib/test.js:127:12)
      at node_modules/supertest/lib/test.js:124:5
      at Test.Request.callback (node_modules/supertest/node_modules/superagent/lib/node/index.js:785:12)
      at IncomingMessage.<anonymous> (node_modules/supertest/node_modules/superagent/lib/node/index.js:990:12)
      at _stream_readable.js:920:16

【问题讨论】:

在浏览器中打开该 URL 并检查状态 - 这真的是 404。也许您的配置不正确并且您正在返回 200 而不是 404? @KrzysztofSafjanowski 这就是我们使用测试框架的原因,我知道这会失败。如何处理Uncaught AssertionError 这是我的问题.. 为什么需要处理?提出了断言,这是您期望发生的。然后 Mocha 未能通过您的测试,这是 应该 发生的。 (或者如果问题是 Mocha 没有未能通过您的测试,那么您需要在问题中明确说明并包含 MCVE(而不是部分代码)。) 请同时阅读 - codeforgeek.com/2015/07/… 您找到解决方案了吗?我的情况完全一样。 【参考方案1】:

我相信您的 server/app/main.js 上需要一个错误处理程序,其内容如下:

// catch 404 and forward to the error handler
app.use(function(req, res, next) 
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
);

app.use(function(err, req, res, next) 

  // responds to client or test with error
  res.status(err.status || 500).json(
 message: "this is not the web page you're looking for. - obi-wan codenobi";
);

【讨论】:

以上是关于Mocha:未捕获的 AssertionError:预期 200 为 404的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的错误:在 mocha 单元测试时监听 EADDRINUSE:地址已在使用 :::3000

Mocha Chai 基本 GET 请求未正确记录通过和失败

解决用try except 捕获assert函数产生的AssertionError异常时,导致断言失败的用例在测试报告中通过的问题

AssertionError:内部:未指定默认项目

AssertionError:未分配的分区

Mocha 未显示 chai 错误消息