`mocha` 改成 `ts-mocha`

Get Start

原本的测试单元都是和源码用tsc编译到dist文件夹后, 再启动测试, 这样无疑浪费不少的时间, 无意间找到这个框架.

Its Example

官方的写法, 就是像mocha那样, 直接运行ts-mocha就可以了, 但我就直接报错, 提示我[ERROR] tsconfig_1.loadSync is not a function.

Google了一下, 原因不明. 貌似没人遇上这个情况, 是我弄错了吗? 那行, 我去瞧瞧别人的例子.

Other Example

别人也是直接用ts-mocha, 但有点不同, 在mocha.opts里面有一句--require ts-mocha,

1
2
--require ts-mocha
--require should

这个在文档中没有任何的说明, 难道用了就有神效?

And Me

mocha.opts里面补上--require ts-mocha后, 其余照旧(除了提出tsc这步), 测试成功运行. 可能原本官方就提供这个方法, 后来在README里面删除了. 不过现在可以了. 希望以后不要再踩这个坑吧.


Update at 2018-01-09

之前用上了ts-mocha, 后来我看了一下代码, 其实就是一个ts-node的二次封装, 所以干脆就用回ts-node. 将mocha.opts里面的--require ts-mocha换成--require ts-node/register, 执行测试一下可以用.

Generate Cover Reporter Fail

虽然测试正常运行, 但生成的覆盖报告却是空的, 可能是参数没有补齐. 好在nyc官方提供了相关的文档, 注意其中几点就行了:

  1. 需要source-map-support
1
npm install --save-dev source-map-support
  1. 补上重要的nyc参数
1
2
3
4
5
6
7
8
9
{
...
"extension": [
".ts", ".tsx"
],
"all": true,
"cache": true
...
}

再适当地用includeexclude, 覆盖报告就回来了.


Arylo Yeung, Typescripter, 暂留在鹅厂
tomail:arylo.open@gmail.com