我目前正在为使用 @vue/cli-plugin-unit-mocha 运行单元测试的 Vue 项目设置测试环境。该项目使用 TypeScript 和 .vue 单文件组件。我已经成功地设置了我的项目来运行单元测试并为 TypeScript 文件生成代码覆盖率报告,但是当我尝试为 SFC 添加测试时,我收到一个错误。
为了生成覆盖率报告,我使用 nyc + istanbul-instrumenter-loader。我认为我的配置对于常规 Typescript 文件是正确的,但是当它必须处理 .vue 文件时 istanbul-instrumenter-loader 会引发错误:
error in ./src/pages/rapportages/components/reports-grid/reports-grid-container.vue?vue&type=script&lang=ts&
Module build failed (from ./node_modules/istanbul-instrumenter-loader/dist/cjs.js):
TypeError: Cannot read property 'fileCoverage' of undefined
Run Code Online (Sandbox Code Playgroud)
在我看来 .vue 文件没有被正确转换/转译。
这是我的 package.json:
{
...
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"test": "vue-cli-service test:unit src/**/__tests__/*.spec.ts --require mocha-setup.js",
"test:ci": "yarn run test --reporter mocha-teamcity-reporter",
"test:cover": "cross-env NODE_ENV=coverage nyc vue-cli-service test:unit src/**/__tests__/*.spec.ts --require mocha-setup.js"
}
...
"nyc": …
Run Code Online (Sandbox Code Playgroud) 对于大学作业,我正在学习 Haskell,当阅读有关 do-notation 和排序的内容时>>=
,>>
我遇到了这种我没有预料到的行为。
[1,2,3] >> [1] -- returns [1,1,1]
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么第一个数组的每个元素都被第二个数组的元素替换?似乎列表以某种方式连接起来,而我预计第一个表达式的结果将被完全忽略,因此我期望[1]
结果。
预先非常感谢。