如何配置笑话快照位置

时间:2019-08-27 21:57:06

标签: javascript jestjs

我希望将我的笑话快照创建为测试文件的同胞

我目前将快照保存在默认的<mat-form-field appearance="outline" class="col-12 col-md-6"> <mat-select formControlName="departamento" [(ngModel)]="selectedValue"> <mat-option *ngFor="let departamento of deapartamentos" [value]="departamento.codigo">{{departamento.nombre}} </mat-option> </mat-select> </mat-form-field> <mat-form-field appearance="outline" class="col-12 col-md-6"> <mat-select formControlName="departamento" [(ngModel)]="selectedValue"> <mat-option *ngFor="let departamento of deapartamentos" [value]="departamento.codigo">{{departamento.codigo}} </mat-option> </mat-select> </mat-form-field> 文件夹中。

当前:

Screenshot of Folder Structure: Before

我想要实现的目标:

Screenshot of Folder Structure: What I want

我在github上发现了此信息:https://github.com/facebook/jest/issues/1650

在线程中,有人说以下内容应该可以工作,但是我没有任何运气(即使更改了正则表达式和其他更改):

__snapshots__

3 个答案:

答案 0 :(得分:1)

package.json 中(或者如果使用 jest.config.js ),则需要为snapshotResolver文件添加路径:

"jest": {
  "snapshotResolver": "./snapshotResolver.js",
}

snapshotResolver.js ,它是一个包含代码的文件,可以在github问题上找到它。

就我而言,此文件位于项目的根目录( node_modules 文件夹附近)

答案 1 :(得分:1)

此外,除了 Vasyl Nahuliak's answer 中建议的 snapshotResolver 路径之外,还可以实现如下所示的快照和测试文件:

file.test.js
file.test.js.snap

您的 snapshotResolver 应如下所示:

module.exports = {
  testPathForConsistencyCheck: 'some/example.test.js',

  resolveSnapshotPath: (testPath, snapshotExtension) =>
    testPath.replace(/\.test\.([tj]sx?)/, `.test.$1${snapshotExtension}`),

  resolveTestPath: (snapshotFilePath, snapshotExtension) =>
    snapshotFilePath.replace(snapshotExtension, ''),
};

答案 2 :(得分:1)

这些解决方案更加复杂,这是您尝试做的事情所需要的。

正如 https://github.com/facebook/jest/issues/1650

中指出的那样

解决方案

创建一个文件:我用过 - 'jest/snapshotResolver.js'

module.exports = {
  resolveSnapshotPath: (testPath, snapshotExtension) =>
     testPath + snapshotExtension,
  resolveTestPath: (snapshotFilePath, snapshotExtension) =>
    snapshotFilePath.replace(snapshotExtension, ''),
  testPathForConsistencyCheck: 'some.test.js',
};

在你的笑话配置中将该文件设置为解析器

snapshotResolver: './jest/snapshotResolve.js',

或者如果你在 package.json 中开玩笑的配置:

"snapshotResolver": "./jest/snapshotResolve.js",

说明

简而言之,这两个函数互为镜像,一个取测试文件路径并返回快照路径,另一个取快照路径并返回测试文件路径。第三个是用于验证的文件路径示例。

更清晰的代码以帮助澄清正在发生的事情

要记住的一件事是路径是完整路径,而不是相对路径。

/**
 * 
 * @param testPath Path of the test file being test3ed
 * @param snapshotExtension The extension for snapshots (.snap usually)
 */
const resolveSnapshotPath = (testPath, snapshotExtension) => {
    const snapshotFilePath = testPath + snapshotExtension; //(i.e. some.test.js + '.snap')
    return snapshotFilePath;
}

/**
 * 
 * @param snapshotFilePath The filename of the snapshot (i.e. some.test.js.snap) 
 * @param snapshotExtension The extension for snapshots (.snap)
 */
const resolveTestPath = (snapshotFilePath, snapshotExtension) => {
    const testPath = snapshotFilePath.replace(snapshotExtension, '').replace('__snapshots__/', ''); //Remove the .snap
    return testPath;
}

/* Used to validate resolveTestPath(resolveSnapshotPath( {this} )) */
const testPathForConsistencyCheck = 'some.test.js'; 

module.exports = {
    resolveSnapshotPath, resolveTestPath, testPathForConsistencyCheck
};