我将在Angular 12下安装Snapshot Testing with Storybook。我安装jest $ yarn add --dev jest jest-preset-angular @types/jest
并进行设置
"jest": {
"preset": "jest-preset-angular",
"setupFilesAfterEnv": ["<rootDir>/src/setupJest.ts"]
}
字符串
并设置setupJest.ts Data,其中只有一行import 'jest-preset-angular/setup-jest';
。
这就是Jest设置。这对我很有效。
问题是Storybook中的Storyshorts插件。我安装了Storyshorts yarn add @storybook/addon-storyshots --dev
并使用以下代码创建了文件src/storyshorts.test.js
:
import initStoryshots from '@storybook/addon-storyshots';
initStoryshots();
型
当我在我的Angular项目中运行jest
命令时,我会出现以下错误:
Cannot find module 'jest-preset-angular/build/setup-jest' from 'node_modules/@storybook/addon-storyshots/dist/ts3.9/frameworks/angular/loader.js'
at Resolver.resolveModule (node_modules/jest-resolve/build/resolver.js:324:11)
at setupAngularJestPreset (node_modules/@storybook/addon-storyshots/dist/ts3.9/frameworks/angular/loader.js:36:14)
at Object.load (node_modules/@storybook/addon-storyshots/dist/ts3.9/frameworks/angular/loader.js:43:5)
at Object.loadFramework [as default] (node_modules/@storybook/addon-storyshots/dist/ts3.9/frameworks/frameworkLoader.js:26:19)
at Object.testStorySnapshots [as default] (node_modules/@storybook/addon-storyshots/dist/ts3.9/api/index.js:42:39)
型
我的Package.json有以下条目:
...
"@storybook/addon-storyshots": "^6.3.12",
"@types/jest": "^27.0.2",
"jest": "^27.3.1",
"jest-preset-angular": "^10.0.1",
型
Angular 12包
1条答案
按热度按时间rjjhvcjd1#
编辑:>= Angular 16
上下文
由于一个错误(
TypeError: Cannot destructure property 'imports' of 'analyzedMetadata' as it is undefined.
),您将无法再运行Storyshots。目前正在打开一个PR来修复它(https://github.com/storybookjs/storybook/pull/23555)。我将在PR被合并时提供新的jest配置。
另外,你应该注意到StoryShots将在不久的将来被弃用,并将被test-runner(a migration guide will be provided by the core team, stay tune)取代。
因此,Storyshots不会被改进/更改(除非社区在其弃用日期之前)。
编辑:>= Angular 13:
上下文
jest-preset-angular 12.X.X
@storybook/addon-storyshots 6.5.X
由于我保留
Karma/Jasmine
用于单元测试(更大的社区),Jest
仅用于Storybook
的快照测试,因此我的jest.config.js
位于.storybook
文件夹下,我创建了一个特定的tsconfig
文件。jest.config.js
字符串
tsconfig.storyshots.json
型
为空.js
型
= * 原始(Angular 12)**=
欢迎来到地狱:D!
对于您的问题:storyshots插件试图从错误路径加载
setup-jest.ts
文件。自jest-preset-angular
版本9以来,setup-jest.ts
不再位于jest-preset-angular/build/
文件夹中(并且这不是唯一受影响的文件)。Storyshots插件还没有处理这个变化,所以你可以使用jest config中的moduleNameMapper
来重写路径并修复你的问题。以
jest.config.js
为例:型
如果你需要更多的解释,问我:)