为啥我的 NYC 代码覆盖范围不适用于 ESM?
Posted
技术标签:
【中文标题】为啥我的 NYC 代码覆盖范围不适用于 ESM?【英文标题】:Why is my NYC Code coverage not working with ESM?为什么我的 NYC 代码覆盖范围不适用于 ESM? 【发布时间】:2021-10-30 13:28:46 【问题描述】:我有以下代码...
App.mjs
import express from "express";
const port = process.env.PORT || 4000;
class CommunicationsApplication
constructor()
this.app = CommunicationsApplication.getExpress();
this.app.get('/', (req, res) =>
res.send('Hello World!')
)
this.app.listen(port, () =>
console.log(`listening at http://localhost:$port`)
)
static getExpress()
return express()
App.spec.mjs
import CommunicationsApplication from "./App.mjs";
import sinon from "sinon";
import expect from "chai";
it('Testing to see if test works', () =>
const result =
get: sinon.fake(),
listen: sinon.fake()
sinon.stub(CommunicationsApplication, 'getExpress').callsFake(()=>result)
new CommunicationsApplication();
expect(result.get.callCount).to.eq(1);
expect(result.listen.callCount).to.eq(1);
)
package.json
"type": "module",
...
"test": "nyc mocha --recursive './lib/**/*.spec.mjs' --require esm"
但是当我跑步时,我看到...
✔ Testing to see if test works
为什么我的代码覆盖率不起作用?
1 passing (4ms)
----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|-------------------
All files | 0 | 0 | 0 | 0 |
----------|---------|----------|---------|---------|-------------------
【问题讨论】:
【参考方案1】:不会接受这个答案,但这确实有效......
"test": "c8 mocha --recursive './lib/**/*.spec.mjs' --require esm"
【讨论】:
【参考方案2】:NYC 尚不支持 Node 原生 ESM。见https://github.com/istanbuljs/nyc/issues/1287
【讨论】:
以上是关于为啥我的 NYC 代码覆盖范围不适用于 ESM?的主要内容,如果未能解决你的问题,请参考以下文章
Swagger-JSdoc 不适用于 Node.JS 14.15.4 错误“ERR_REQUIRE_ESM”