作为我正在构建的项目的一部分,我目前有一个我创建的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?
非常感谢你!
答案 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还存在一个问题。但是,看起来还没有什么吸引力。