【问题标题】:How to test console.log output using Jest or other Javascript Testing Framework?如何使用 Jest 或其他 Javascript 测试框架测试 console.log 输出?
【发布时间】:2017-12-07 00:47:51
【问题描述】:

我有一个异步运行的函数,控制台在随机 setTimeout 之后按顺序记录数字 1 到 5。我想用 Jest 为这个函数写一个测试。如何编写一个测试 console.log 是 1、2、3、4、5 的测试?

【问题讨论】:

    标签: testing asynchronous logging jestjs


    【解决方案1】:

    是的,您可以使用jest.fn

    这是一个例子:

    文件hello.js

    console.log("Hello World");
    

    文件hello.test.js

    let outputData = "";
    storeLog = inputs => (outputData += inputs);
    test("console log Hello World", () => {
      console["log"] = jest.fn(storeLog);
      require("./hello.js");
      expect(outputData).toBe("Hello World");
    });
    

    【讨论】:

    • 你应该将原始的console.log函数存储在一个变量中,并在测试完成后恢复原始的console.log,否则这可能会与其他可能的测试混淆
    • 该答案显示了如何检查是否调用了console.log,而不是标准输出中的实际内容,不幸的是,它不一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    相关资源
    最近更新 更多