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

测试剪贴板提示代码时遇TypeError: Clipboard.on is not a function错误求助

解决TypeError: Clipboard.on is not a function的测试问题

错误核心是你当前Mock的Clipboard类仅实现了constructor,但主代码中调用的on方法在Mock里不存在,导致触发类型错误。

修改Mock代码的两种方案

方案1:如果on是实例方法(主代码通过Clipboard实例调用)

修改测试文件中的Mock类,添加on实例方法:

let clipboard_args;
let clipboard_event_listeners = {}; // 可选:存储监听的事件和回调,方便后续测试断言

class Clipboard {
    constructor(...args) {
        clipboard_args = args;
    }

    // 模拟Clipboard的事件监听方法
    on(eventName, callback) {
        // 可选:保存监听信息,用于验证事件绑定是否正确
        if (!clipboard_event_listeners[eventName]) {
            clipboard_event_listeners[eventName] = [];
        }
        clipboard_event_listeners[eventName].push(callback);
    }
}

mock_cjs("clipboard", Clipboard);

方案2:如果on是静态方法(主代码直接通过Clipboard类调用)

给Mock类添加静态on方法:

let clipboard_args;
let clipboard_static_listeners = {};

class Clipboard {
    constructor(...args) {
        clipboard_args = args;
    }

    // 静态事件监听方法
    static on(eventName, callback) {
        if (!clipboard_static_listeners[eventName]) {
            clipboard_static_listeners[eventName] = [];
        }
        clipboard_static_listeners[eventName].push(callback);
    }
}

mock_cjs("clipboard", Clipboard);

可选测试优化

如果需要验证事件绑定逻辑是否正确,可在测试用例中检查存储的监听信息,比如:

// 调用update_elements后执行断言
expect(clipboard_event_listeners['success']).toBeDefined();
expect(clipboard_event_listeners['success'].length).toBe(1);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:32:33