如何将Ava与Angular / CLI构建typescript项目一起使用

时间:2017-08-10 17:54:19

标签: angular testing npm ava

作为我正在构建的项目的一部分,我目前有一个我创建的angular / cli打字稿项目。我们目前正在使用业力测试框架,但如果可能的话,对转换到AVA非常感兴趣。

我目前正在做npm install --save-dev ava 我已经查看了ava文档中的typescript设置 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文件,这些文件是为业力量身定制和编写的,但似乎并非如此,因为我只是给予< / p>

# 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测试跑步者起作用;此外,还需要做些什么才能使我们现有的基于业力/茉莉花的测试框架适应Ava?

非常感谢你!

1 个答案:

答案 0 :(得分:2)

我在寻找其他东西时碰到了这个答案,并且意识到它也许值得一试,尽管自问问题以来已有一段时间。

有一个 路径,可通过ts-node运行AVA + TS。此外,还有一个tsconfig-paths包,如果使用的话,可以帮助正确映射到tsconfig的{​​{1}}属性。

下面是AVA配置的大致外观。当然,根据您的Angular CLI项目结构,您的路径可能会有所不同,但是适用相同的基本原理:

paths

此外,您可能有一个特定于测试的"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

请注意,由于Node本机仅使用CommonJS(至少在撰写本文时),因此您的TS_NODE_PROJECT=tsconfig-spec.json node_modules/.bin/ava --verbose 将需要编译为该模块格式。因此,继续上面的示例,您的tsconfig可能如下所示:

tsconfig-spec.json

AVA和Jasmine之间的API并不相同,但是根据我的经验,它实际上非常相似,因此转换并不会太麻烦,主要是机械转换。在撰写本文时,create a codemod for the conversion还存在一个问题。但是,看起来还没有什么吸引力。