how to separate files for mocha-webpack
how to separate files for mocha-webpack
What's happening is that when I run my tests, my coverage only shows bundle.js
which isn't that helpful.
bundle.js
I have the following webpack file setup and wanted to know what I should change to make it so that each file is covered individually
webpack.config-test.js
var nodeExternals = require("webpack-node-externals")
const path = require("path")
module.exports = {
context: path.resolve(__dirname),
resolve: {
extensions: [".js"],
alias: {
"@": path.join(__dirname, "../../src/server"),
}
},
output: {
path: "./",
filename: "[name].js",
},
target: "node", // webpack should compile node compatible code
externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
}
running the command via npm:
nyc mocha-webpack --webpack-config test/server/webpack.config-test.js --glob "*spec.js" test/server/unit
The output currently is:
All files | 90.38 | 70.83 | 90.91 | 90.2 | |
bundle.js | 90.38 | 70.83 | 90.91 | 90.2 |... 78,280,282,306
whereas I'm expecting the output to be
All files | 80 | 68.75 | 80 | 80 | |
functions.js | 78.79 | 68.75 | 80 | 78.79 |... 59,60,62,64,88 |
mixin.js | 100 | 100 | 100 | 100 |
In the non mocha-webpack version, I also added the filename to each test, and I would like that to also happen in the webpack version. So without webpack, I run on an index.js, i.e.
index.js
const fs = require("fs")
const path = require("path")
const files = fs.readdirSync(__dirname)
files.forEach(file =>
{
if (!file.match(/.spec.js$/))
return
console.log(file)
describe(file, function ()
{
require(path.join(__dirname, file))
})
})
which then outputs something like:
sql.spec.js
Some SQL tests
✓ should be 10
test.spec.js
generateRandomString
✓ should generate a 20 length string
✓ should generate a 40 length string
✓ should throw error for -10
✓ should throw error for length
getRequiredProps
✓ should get prop
✓ should throw error
toTime
✓ 1 seconds should return 1000
✓ 1 minutes should return 60000
✓ 1 hours should return 3600000
✓ 1 days should return 86400000
Update
There's source-mapping, but it's showing a lot more than I'd like: https://github.com/zinserjan/mocha-webpack/blob/master/docs/installation/webpack-configuration.md
------------------------------------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
------------------------------------------|----------|----------|----------|----------|-------------------|
All files | 78.8 | 54.72 | 87.27 | 78.7 | |
.tmp/mocha-webpack/1532582562486/webpack | 95.45 | 75 | 83.33 | 95.24 | |
bootstrap 4e654663ecc955703de0 | 95.45 | 75 | 83.33 | 95.24 | 49 |
node_modules/mocha-webpack/lib | 100 | 100 | 100 | 100 | |
entry.js | 100 | 100 | 100 | 100 | |
src/server | 64 | 48.65 | 70 | 64 | |
db.js | 45.61 | 26.32 | 45.45 | 45.61 |... 20,122,126,138 |
functions.js | 84.85 | 72.22 | 100 | 84.85 | 42,58,59,60,87 |
mixin.js | 100 | 100 | 100 | 100 | |
mock.js | 100 | 100 | 100 | 100 | |
src/server/post | 75 | 62.5 | 100 | 75 | |
maptool.js | 75 | 62.5 | 100 | 75 |... 41,148,158,159 |
test/server/unit | 98.33 | 100 | 100 | 98.33 | |
functions.spec.js | 96.97 | 100 | 100 | 96.97 | 67 |
maptool.spec.js | 100 | 100 | 100 | 100 | |
mock.spec.js | 100 | 100 | 100 | 100 | |
sql.spec.js | 100 | 100 | 100 | 100 | |
------------------------------------------|----------|----------|----------|----------|-------------------|
How would I reduce it so that only the files being checked are outputted?
This question has not received enough attention.
@AluanHaddad yes, I like the unbundled form, that's my intention. I just don't know how to do it with webpack. I'm sure there's a way since I'm using vue-cli which does proper code splitting and chunking and stuff that I don't fully understand lol.
– A. Lau
yesterday
Webpack is a bundler by definition. Tools like RequireJS and SystemJS apply bundling as an optimization but operate in terms of individual files by default. That said I believe you may want to look at how tools like karma integrate into Webpack.
– Aluan Haddad
yesterday
yeah, karma seems to show all the file differences. But I read somewhere that you can't use Karma for node (backend).
– A. Lau
yesterday
@AluanHaddad Seems like there's source mapping in built already, but I'm not sure how it's supposed to be used. See edit
– A. Lau
yesterday
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
Thus is a good question but, personally, I prefer the unbundled form for many reasons.
– Aluan Haddad
yesterday