【问题标题】:How do I configure mocha to print full stack trace for an error?如何配置 mocha 以针对错误打印完整的堆栈跟踪?
【发布时间】:2020-12-18 10:27:29
【问题描述】:

我在 Typescript 中使用 mocha 运行以下测试:

摩卡命令:

$ mocha -r ts-node/register -r test/config.ts --timeout 10000 --async-stack-traces --full-trace 'test/**/*.test.ts'

测试:

import assert from "assert";
import { StatusCodes } from "http-status-codes";

describe.only("My test", () => {

    it("should work properly", async () => {
        const response = await client.postArticle(testArticle);
            
        assert.strictEqual(response.status, StatusCodes.OK);
        // More test code
    });
});

import axios from "axios";

async postArticle(testArticle: any): Promise<any> {
    return axios.post(resourceByIdUrl, testArticle, {
        headers: { Authorization: `Bearer ${myToken}` }
    });
}

在断言之前测试已经失败,在 postArticle 函数中抛出了一个错误。我的问题是,它没有告诉我导致错误的代码行:

Error: Request failed with status code 401
      at createError (/.../node_modules/axios/lib/core/createError.js:16:15)
      at settle (/.../node_modules/axios/lib/core/settle.js:17:12)
      at IncomingMessage.handleStreamEnd (/.../node_modules/axios/lib/adapters/http.js:244:11)
      at IncomingMessage.emit (node:events:341:22)
      at IncomingMessage.EventEmitter.emit (node:domain:467:12)
      at endReadableNT (node:internal/streams/readable:1294:12)
      at processTicksAndRejections (node:internal/process/task_queues:80:21)

尤其是在更复杂的测试中,知道是哪一行代码导致了错误会很有帮助。如何配置 mocha 以显示此行?

【问题讨论】:

  • 这不仅仅是一个 axios 问题。如果没有--async-stack-traces,任何异步链中抛出的错误都将丢失跟踪中的异步方法。我仍然想知道如何在 mocha 中启用它。

标签: javascript typescript testing installation mocha.js


【解决方案1】:

问题不是 mocha 而是 axios。 请参阅导致截断堆栈跟踪的this issue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2015-07-01
    • 2011-05-15
    • 1970-01-01
    • 2010-09-25
    • 2021-08-18
    相关资源
    最近更新 更多