Ang*_*hef 6 angular angular-test
我有一个NgModule位于/src文件夹外部的Angular CLI项目(最终这个NgModule将打包为npm模块,但现在我只是把它留在了外面/src).
我正在尝试为这个NgModule编写单元测试,但ng test似乎没有拾取.spec.ts文件/src夹之外的文件.
我试过改变路径/src/test.ts:
// Original
const context = require.context('./', true, /\.spec\.ts$/);
// Does not work
const context = require.context('../', true, /\.spec\.ts$/);
// Does not work
const context = require.context('/absolute/path/to/ngmodule', true, /\.spec\.ts$/);
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误: Module build failed: Error: /absolute/path/to/file.spec.ts is not part of the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.
我也尝试在以下include属性中添加我的NgModule路径tsconfig.spec.json:
"include": [
"../my-ng-module/**/*.spec.ts", // Added this
"**/*.spec.ts",
"**/*.d.ts"
]
Run Code Online (Sandbox Code Playgroud)
但没有成功.有任何想法吗?
在tsconfig.spec.json中
"include": [
"../*.spec.ts", // your spec file location parent of src or ../yourpath/
"**/*.spec.ts",
"**/*.d.ts"
]
Run Code Online (Sandbox Code Playgroud)
在test.ts中
如果您选择父目录,它也会选择其他规格,因此在选择src的父目录时,请提供您的组件名称或指定规范的确切路径
const context1 = require.context('./', true, /\.spec\.ts$/);//
const context = require.context('../', true, /app\.component\.spec\.ts$/);//
context.keys().map(context);
context1.keys().map(context1);
Run Code Online (Sandbox Code Playgroud)
当您在src的父文件夹中时,相同的上下文正在拾取node_modules中的文件,因此我们需要提及spec.ts名称.
app spec在src的父级中,游戏规范在src文件夹中
如果你只想指定根目录,并且从那里你想要选择所有的spec文件,那么我们给出一个不同的命名约定,它不同于node_modules中的spec文件.说你的src是yourapp.componentout.spec.ts,哪些是在insideapp.componentin.spec.ts里面你可以给一个路径而不是两个目录
const context = require.context('../', true, /out\.spec\.ts$|in\.spec\.ts$/);//
context.keys().map(context);
Run Code Online (Sandbox Code Playgroud)
或者另一种方式遵循仅在src之外的文件的命名约定并放置
const context1 = require.context('./', true, /\.spec\.ts$/);//
const context = require.context('../', true, /out\.spec\.ts$/);//
context.keys().map(context);
context1.keys().map(context1);
Run Code Online (Sandbox Code Playgroud)
如果您不想更改规范文件名,请提供模块位置的路径而不是其父路径,您可以跳过node_modules部分.
基本上,我们可以根据需要更改以下内容
require.context(directory, useSubdirectories = false, regExp = /^\.\//)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 !!!
参考:https://webpack.js.org/guides/dependency-management/#require-context
| 归档时间: |
|
| 查看次数: |
3031 次 |
| 最近记录: |