mocha-webpack не находит и не выполняет тесты, несмотря на то, что webpack создает их - PullRequest
0 голосов
/ 09 октября 2018

Я выполняю mocha-webpack следующим образом:

"test": "node ./node_modules/mocha-webpack/bin/mocha-webpack --require ./src/tool/setup.js --webpack-config ./src/tool/webpack.config.test.js \"./dist/test.bundle.js\"",

Мой webpack.config.test.js выглядит следующим образом:

const path = require("path");
// const WebpackMochaPlugin = require('webpack-mocha-plugin');
const nodeExternals = require('webpack-node-externals');

module.exports = {
    target: 'node',
    mode: "development",

    entry: {
        test: "./src/test.bundle.ts",
    },

    output: {
        path: path.resolve(__dirname, "../../dist"),
        filename: "[name].bundle.js"
    },

    resolve: {
        extensions: [".ts", ".js", "*.tsx"]
    },

    externals: [nodeExternals()],

    devtool: "inline-source-map",

    module: {
        rules: [
            {
                enforce: "pre",
                test: /\.js$/,
                loader: "source-map-loader"
            },
            {
                test: /\.(ts|tsx)$/,
                loader: "ts-loader"
            },
            {
                enforce: "post",
                test: /\.(js|ts|tsx)$/,
                // Exlude tests so they don't show up in coverage report.
                exclude: /\.(spec)\.(ts|js)$/,
                loader: "sourcemap-istanbul-instrumenter-loader",
                query: {
                    "force-sourcemap": true
                }
            }
        ]
    },

    plugins: [
        /*
        new WebpackMochaPlugin({
            codeCoverage: true
        })*/
    ],

    // When using code coverage exclude the coverage report from being watched.
    // Otherwise you might get an infinite loop.
    watchOptions: {
        ignored: /coverage/
    }
};

Тесты встраиваются в выводфайл, но mocha-webpack не выполняет / не находит их.

Мой файл setup.js выглядит следующим образом:

process.env.NODE_ENV = 'test';
const jsdom = require("jsdom");
const {
    JSDOM
} = jsdom;
const {
    document
} = (new JSDOM('<!doctype html><html><body></body></html>')).window;
global.document = document;
global.window = document.defaultView;

const noop = () => {};

require.extensions[".css"] = noop;
require.extensions[".scss"] = noop;
require.extensions[".ico"] = noop;
require.extensions[".png"] = noop;
require.extensions[".svg"] = noop;


/*
Object.keys(document.defaultView).forEach(
    (property) => {
        if (typeof global[property] === "undefined") {
            exposedProperties.push(property);
            global[property] = document.defaultView[property];
        }
    }
);*/

global.navigator = {
    userAgent: "node.js"
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...