You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin JS Karma测试超时:修改配置无效求助

解决Kotlin JavaScript Karma测试超时问题

问题描述

运行Kotlin JavaScript的Karma测试时触发超时错误:

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

项目当前build.gradle.kts配置:

js(IR) {
    useCommonJs()
    browser {
        testTask {
            useKarma {
                useChromeHeadless()
            }
        }
    }
    binaries.executable()
}

尝试在karma.config.d/karma.conf.js中增加超时时间,配置已合并到build/js/packages/project-name-test/karma.conf.js但未生效,自定义配置内容:

module.exports = function (config) {
    config.set({
        crossOriginAttribute: false,
        processKillTimeout: 90000,
        browserDisconnectTimeout: 90000,
        browserNoActivityTimeout: 90000,
        frameworks: ['mocha'],
        client: {
            timeout: "9s",
            mocha: {
                timeout: "9s",
                reporter: "spec",
                args: ["timeout", "9s"]
            },
        }
    });
};

解决方法

1. 通过Gradle配置直接设置Mocha超时

Kotlin Gradle插件会生成Karma基础配置,自定义配置可能被插件覆盖,建议直接在build.gradle.kts中通过clientConfig设置Mocha参数,确保配置生效:

js(IR) {
    useCommonJs()
    browser {
        testTask {
            useKarma {
                useChromeHeadless()
                // 配置Mocha超时为9秒
                clientConfig.put("mocha", mapOf(
                    "timeout" to 9000
                ))
            }
        }
    }
    binaries.executable()
}

2. 检查异步测试代码逻辑

超时错误的核心原因可能是异步测试未正确完成:

  • 使用done()回调的测试,必须在异步操作结束后调用done(),异常场景要传入done(error)
  • 返回Promise的测试,要确保Promise最终会resolve,避免出现挂起或未处理的reject

3. 调整Karma全局超时参数

如果是浏览器连接或进程超时问题,可在Gradle中补充全局超时配置:

js(IR) {
    useCommonJs()
    browser {
        testTask {
            useKarma {
                useChromeHeadless()
                // 设置全局超时参数
                config.set("browserDisconnectTimeout", 90000)
                config.set("browserNoActivityTimeout", 90000)
                config.set("processKillTimeout", 90000)
                // 同时配置Mocha超时
                clientConfig.put("mocha", mapOf(
                    "timeout" to 9000
                ))
            }
        }
    }
    binaries.executable()
}

内容的提问来源于stack exchange,提问作者vovahost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:15:31