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异常时,导致断言失败的用例在测试报告中通过的问题