如何使用 Ava 和 Angular/CLI 构建打字稿项目
How to use Ava with Angular/CLI build typescript project
作为我正在构建的项目的一部分,我目前创建了一个 angular/cli 打字稿项目。我们目前正在使用业力测试框架,但如果可能的话,我们非常有兴趣切换到 AVA。
我目前已经完成了 npm install --save-dev ava
我查看了 ava 文档中的打字稿设置
https://github.com/avajs/ava/blob/master/docs/recipes/typescript.md
我也按照主页上的设置进行操作,并在我的 package.json
中添加了一个 "ava" 部分
"ava": {
"files": [
"**/*.spec.ts"
],
"source": [
"**/*.ts"
],
"match": [],
"concurrency": 5,
"failFast": true,
"failWithoutAssertions": false,
"tap": true,
"powerAssert": false,
"require": [
"babel-register"
],
"babel": "inherit"
}
我希望默认情况下这会以某种方式获取我们当前编写的 spec.ts
文件,这些文件是为业力定制和编写的,但似乎并非如此,因为我只是给出
# Couldn't find any files to test
not ok 1 - Couldn't find any files to test
1..0
# tests 0
# pass 0
# fail 1
我还尝试删除默认的 test.ts 文件,该文件目前由 Karma 放置,并将其更改为
import test from 'ava';
test('BLA', t => {
t.pass();
});
希望我至少可以 bootstrap 一些东西 来处理我也许可以使用 add/implement 我们其余的测试文件之后。到目前为止,我也没有运气。
以前走过这条路的人能告诉我需要做什么才能让 Ava 测试亚军启动并工作吗?此外,可能需要做些什么才能使我们目前现有的基于 karma/jasmine 的测试框架适应 Ava?
非常感谢您!
AVA 目前仅支持扩展名为 .js
的测试文件。您应该预编译 TypeScript 测试文件并更改 files
模式以匹配构建目录中的测试。
我在搜索其他内容时 运行 进入了这个答案,并意识到它可能值得插话,尽管自问这个问题以来已经有一段时间了。
是通过 ts-node
通往 运行 AVA + TS 的路径。此外,还有一个 tsconfig-paths
包可以帮助正确映射到 tsconfig
的 paths
属性,如果使用的话。
AVA 配置大致如下所示。当然,您的路径可能会根据您的 Angular CLI 项目结构而有所不同,但适用相同的基本原则:
"ava": {
"compileEnhancements": false,
"extensions": [
"ts"
],
"require": [
"ts-node/register",
"tsconfig-paths/register"
],
"files": [
"src/**/*.spec.ts"
],
"sources": [
"src/**/*.ts",
"src/index.ts"
],
"failWithoutAssertions": true
}
此外,您可能有一个特定于测试的 tsconfig
,在这种情况下,您需要通过 TS_NODE_PROJECT
环境变量指向它,ts-node
.因此,例如,您的 test
任务可能如下所示:
TS_NODE_PROJECT=tsconfig-spec.json node_modules/.bin/ava --verbose
请注意,因为 Node 本身仅使用 CommonJS(至少在撰写本文时如此),您的 tsconfig
将需要编译为该模块格式。因此,继续上面的示例,您的 tsconfig-spec.json
可能看起来像这样,以及其他所需的选项:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"sourceMap": true
}
}
AVA 和 Jasmine 之间的 API 是不一样的,但实际上,根据我的经验,它们足够相似以至于转换不会太痛苦——主要是机械的。在撰写本文时,create a codemod for the conversion 有一个未解决的问题;然而,它似乎还没有太大的吸引力。
作为我正在构建的项目的一部分,我目前创建了一个 angular/cli 打字稿项目。我们目前正在使用业力测试框架,但如果可能的话,我们非常有兴趣切换到 AVA。
我目前已经完成了 npm install --save-dev ava
我查看了 ava 文档中的打字稿设置
https://github.com/avajs/ava/blob/master/docs/recipes/typescript.md
我也按照主页上的设置进行操作,并在我的 package.json
中添加了一个 "ava" 部分"ava": {
"files": [
"**/*.spec.ts"
],
"source": [
"**/*.ts"
],
"match": [],
"concurrency": 5,
"failFast": true,
"failWithoutAssertions": false,
"tap": true,
"powerAssert": false,
"require": [
"babel-register"
],
"babel": "inherit"
}
我希望默认情况下这会以某种方式获取我们当前编写的 spec.ts
文件,这些文件是为业力定制和编写的,但似乎并非如此,因为我只是给出
# Couldn't find any files to test
not ok 1 - Couldn't find any files to test
1..0
# tests 0
# pass 0
# fail 1
我还尝试删除默认的 test.ts 文件,该文件目前由 Karma 放置,并将其更改为
import test from 'ava';
test('BLA', t => {
t.pass();
});
希望我至少可以 bootstrap 一些东西 来处理我也许可以使用 add/implement 我们其余的测试文件之后。到目前为止,我也没有运气。
以前走过这条路的人能告诉我需要做什么才能让 Ava 测试亚军启动并工作吗?此外,可能需要做些什么才能使我们目前现有的基于 karma/jasmine 的测试框架适应 Ava?
非常感谢您!
AVA 目前仅支持扩展名为 .js
的测试文件。您应该预编译 TypeScript 测试文件并更改 files
模式以匹配构建目录中的测试。
我在搜索其他内容时 运行 进入了这个答案,并意识到它可能值得插话,尽管自问这个问题以来已经有一段时间了。
是通过 ts-node
通往 运行 AVA + TS 的路径。此外,还有一个 tsconfig-paths
包可以帮助正确映射到 tsconfig
的 paths
属性,如果使用的话。
AVA 配置大致如下所示。当然,您的路径可能会根据您的 Angular CLI 项目结构而有所不同,但适用相同的基本原则:
"ava": {
"compileEnhancements": false,
"extensions": [
"ts"
],
"require": [
"ts-node/register",
"tsconfig-paths/register"
],
"files": [
"src/**/*.spec.ts"
],
"sources": [
"src/**/*.ts",
"src/index.ts"
],
"failWithoutAssertions": true
}
此外,您可能有一个特定于测试的 tsconfig
,在这种情况下,您需要通过 TS_NODE_PROJECT
环境变量指向它,ts-node
.因此,例如,您的 test
任务可能如下所示:
TS_NODE_PROJECT=tsconfig-spec.json node_modules/.bin/ava --verbose
请注意,因为 Node 本身仅使用 CommonJS(至少在撰写本文时如此),您的 tsconfig
将需要编译为该模块格式。因此,继续上面的示例,您的 tsconfig-spec.json
可能看起来像这样,以及其他所需的选项:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"sourceMap": true
}
}
AVA 和 Jasmine 之间的 API 是不一样的,但实际上,根据我的经验,它们足够相似以至于转换不会太痛苦——主要是机械的。在撰写本文时,create a codemod for the conversion 有一个未解决的问题;然而,它似乎还没有太大的吸引力。