how to separate files for mocha-webpack

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP


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.





Thus is a good question but, personally, I prefer the unbundled form for many reasons.
– Aluan Haddad
yesterday





@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.

Popular posts from this blog

Makefile test if variable is not empty

Will Oldham

'Series' object is not callable Error / Statsmodels illegal variable name