尽管通过webpack构建了mocha-webpack,但它们并未找到并执行测试

时间:2018-10-09 15:42:13

标签: javascript webpack mocha-webpack

我正在按以下方式执行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"
};

0 个答案:

没有答案