如何在Angular/CLI build typescript项目中使用Ava
作为我正在构建的项目的一部分,我目前创建了一个angular/cli typescript项目。我们目前正在使用karma测试框架,但如果可能的话,我们非常有兴趣切换到AVA 我目前已经完成了npm安装--save dev ava 我已经看过了ava文档中的typescript设置 我还遵循了主页上的设置,并在我的package.json中添加了一个“ava”部分如何在Angular/CLI build typescript项目中使用Ava,angular,testing,npm,ava,Angular,Testing,Npm,Ava,作为我正在构建的项目的一部分,我目前创建了一个angular/cli typescript项目。我们目前正在使用karma测试框架,但如果可能的话,我们非常有兴趣切换到AVA 我目前已经完成了npm安装--save dev ava 我已经看过了ava文档中的typescript设置 我还遵循了主页上的设置,并在我的package.json中添加了一个“ava”部分 "ava": { "files": [ "**/*.spec.ts" ], "source": [ "
"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
我还尝试删除Karma当前放置的默认test.ts文件,并将其更改为
import test from 'ava';
test('BLA', t => {
t.pass();
});
我希望我至少可以引导一些可以使用的东西,以后我可以使用它们来添加/实现其余的测试文件。到目前为止,我在这方面也没有运气
有人谁采取了这条道路之前告诉我需要做什么才能让Ava测试亚军和工作;此外,为了使我们现有的基于karma/jasmine的测试框架适应Ava,可能需要做些什么
提前非常感谢 AVA目前只支持扩展名为
.js
的测试文件。您应该预编译TypeScript测试文件,并更改文件
模式以匹配生成目录中的测试。AVA当前仅支持扩展名为.js
的测试文件。您应该预编译TypeScript测试文件,并更改文件
模式,以匹配构建目录中的测试。我在搜索其他内容时遇到了这个答案,并意识到它可能值得一提,尽管自问题提出以来已经有一段时间了
有一个路径可以通过TS节点运行AVA+TS
。此外,还有一个tsconfig paths
包,如果正在使用,它有助于正确映射到tsconfig
的paths
属性
下面是AVA配置的大致外观。当然,根据您的项目结构,您的路径可能会有所不同,但相同的基本原则适用于:
"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\u NODE\u项目
环境变量指向它,而TS NODE
将在该变量上拾取该变量。例如,您的test
任务可能如下所示:
TS_NODE_PROJECT=tsconfig-spec.json node_modules/.bin/ava --verbose
请注意,由于节点本机仅使用CommonJS(至少在撰写本文时是这样),因此您的tsconfig
需要编译为该模块格式。因此,继续上面的示例,除其他所需选项外,您的tsconfig-spec.json
可能如下所示:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"sourceMap": true
}
}
AVA和Jasmine之间的API是不一样的,但实际上,根据我的经验,它非常相似,以至于转换不会太痛苦,主要是机械的。在撰写本文时,有一个问题有待解决;然而,它似乎还没有太大的吸引力。我在寻找其他东西时遇到了这个答案,并意识到它可能值得一提,尽管这个问题已经问了一点了 有一个路径可以通过
TS节点运行AVA+TS
。此外,还有一个tsconfig paths
包,如果正在使用,它有助于正确映射到tsconfig
的paths
属性
下面是AVA配置的大致外观。当然,根据您的项目结构,您的路径可能会有所不同,但相同的基本原则适用于:
"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\u NODE\u项目
环境变量指向它,而TS NODE
将在该变量上拾取该变量。例如,您的test
任务可能如下所示:
TS_NODE_PROJECT=tsconfig-spec.json node_modules/.bin/ava --verbose
请注意,由于节点本机仅使用CommonJS(至少在撰写本文时是这样),因此您的tsconfig
需要编译为该模块格式。因此,继续上面的示例,除其他所需选项外,您的tsconfig-spec.json
可能如下所示:
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"sourceMap": true
}
}
AVA和Jasmine之间的API是不一样的,但实际上,根据我的经验,它非常相似,以至于转换不会太痛苦,主要是机械的。在撰写本文时,有一个问题有待解决;但是,它看起来还没有太大的吸引力。如果没有转换文件的预处理器,真的没有其他方法可以做到这一点吗?AVA项目的一些公开问题似乎表明,在没有必要的情况下,有一些方法可以做到这一点。有很多人说,对于他们的用例来说,这应该很容易,这是正确的,但这使得其他用例更加困难。因此没有,目前没有其他方法可以做到这一点。有一个计划,但是一周只有这么多的OSS时间。如果没有转换文件的预处理器,真的没有其他方法可以做到这一点吗?AVA项目的一些公开问题似乎表明,在没有必要的情况下,有一些方法可以做到这一点。有很多人说,对于他们的用例来说,这应该很容易,这是正确的,但这使得其他用例更加困难。因此没有,目前没有其他方法可以做到这一点。有一个计划,但一周只有这么多OSS小时。