初面网初面网

快照

当我们有内容不会频繁更改时可以使用快照。一般用于检测配置项。

// myconfig.js
export const myconfig = () => {
  return {
    server: 'http://localhost',
    port: 3000,
  }
}

测试文件中

// myconfig.test.js
import {myconfig} from './myconfig';

test('测试快照', ()=>{
  expect(myconfig()).toMatchSnapshot();
});

执行快照会在根目录下生成__snapshots__文件夹,里面是快照内容。

另外,如果在watch模式或者watchAll模式下更新配置文件,由于快照匹配不上,测试会通不过。此时在命令行可以根据提示展开可操作内容,如下图所示

其中的u能够接收这次配置变更并更新快照; i能够顺次比对所有配置变更,这在多配置内容时会很有用。

配置项里有动态值

有时配置项不会是一个固定值,而是根据代码计算出的,是动态的。这样的话每次快照都会不匹配。可以修改测试代码使之通过测试。

// myconfig.test.js
import {myconfig} from './myconfig';

test('测试快照', ()=>{
  expect(myconfig()).toMatchSnapshot({
    time: expect.any(Date)  // expect.any(), 预期任意,参数可以任意给定类型
  });
});

不想生成快照文件夹

需要插件支持。

npm install prettier --save

然后将测试代码里的toMatchSnapshot改为toMatchInlineSnapshot即可。执行后,会在测试代码下方生成快照字符串。

更新于 2025/2/26