首页 > 解决方案 > 扩展全局测试对象

问题描述

有没有办法test用一些自定义属性来扩展全局笑话?例如,我想以这种方式在测试之前实现一些逻辑:

test.debug({ /* ... */ }, 'test', () => {
  // ...
});

标签: jestjs

解决方案


这可以在per-test setup filecustom environment中完成,以防自定义需要与更深层次的环境交互:

it.whatever = (whateverArg, ...args) => {
    const cb = args[1];
    if (cb) {
         args[1] = cb.length ?
            (done) => { /* do whatever with whateverArg */ return cb(done); } :
            () => { /* do whatever with whateverArg */ return cb(); }
    }

    return it(...args);
};

所有参数都需要按it原样传递,需要额外注意测试回调,因为测试是否被认为是异步的取决于回调函数的数量。


推荐阅读