Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Npm 摩卡咖啡测试don';t使用Webpack和mocha loader运行 背景_Npm_Reactjs_Mocha.js_Webpack_Webpack Dev Server - Fatal编程技术网

Npm 摩卡咖啡测试don';t使用Webpack和mocha loader运行 背景

Npm 摩卡咖啡测试don';t使用Webpack和mocha loader运行 背景,npm,reactjs,mocha.js,webpack,webpack-dev-server,Npm,Reactjs,Mocha.js,Webpack,Webpack Dev Server,我正在将一些npm脚本移植到Webpack loader,以便更好地了解Webpack的工作原理,除了我的Mocha测试外,我的所有工作都正常:我有一个测试失败,但它并没有显示Mocha正在使用Mocha loader运行,或者测试失败: 问题: 要让所有src/***/.test.js文件与Webpack中的Mocha一起运行,我需要做哪些不同的操作 复制步骤 克隆 运行npm测试查看测试应该如何工作 运行npm运行dev,查看测试如何不使用Webpack运行 Mocha loader不会在

我正在将一些npm脚本移植到Webpack loader,以便更好地了解Webpack的工作原理,除了我的Mocha测试外,我的所有工作都正常:我有一个测试失败,但它并没有显示Mocha正在使用
Mocha loader运行,或者测试失败:

问题: 要让所有
src/***/.test.js
文件与Webpack中的Mocha一起运行,我需要做哪些不同的操作

复制步骤
  • 克隆
  • 运行
    npm测试
    查看测试应该如何工作
  • 运行
    npm运行dev
    ,查看测试如何不使用Webpack运行

  • Mocha loader不会在构建时运行测试,它用于创建一个专门包含测试的包,然后您可以从浏览器运行该包

    我建议为您的测试创建一个单独的webpack配置文件,然后您可以将其托管在使用不同于应用程序端口的webpack dev服务器上。这里有一个例子或多或少是我在自己的项目中使用的模式(在写这个答案时):

    webpack.tests.config.js
    module.exports={
    条目:'mocha!。/tests/index.js',
    输出:{
    文件名:“test.build.js”,
    路径:“tests/”,
    publicPath:'http://'+hostname+':'+port+'/tests'
    },
    模块:{
    装载机:[
    {
    测试:/\.js$/,,
    加载器:['babel-loader']
    },
    {
    测试:/(\.css\.less)$/,
    加载器:“空加载器”,
    排除:[
    /建造/
    ]
    },
    {
    测试:/(\.jpg\.jpeg\.png\.gif)$/,
    加载程序:“空加载程序”
    }
    ]
    },
    开发服务器:{
    主机名:,
    港口:港口
    }
    };
    
    tests/index.js
    //这将搜索以.test.js结尾的文件并需要它们
    //以便将它们添加到Web包包包中
    var context=require.context('.',true,/.+\.test\.js?$/);
    context.keys().forEach(context);
    module.exports=上下文;
    
    package.json
    “脚本”:{
    “test”:“find./-name'*.test.js'| xargs mocha-R min-R babel/register”,
    “devtest”:“webpack dev server--config webpack.tests.config.js”,
    “dev”:“webpack dev server--config webpack.config.js”
    }
    
    test.html
    
    摩卡
    
    然后运行
    npm运行devtest
    ,打开
    http://localhost:/webpack-dev server/test.html
    ,mocha应该运行您的测试

    如果您的模块不需要CSS/LESS或图像,您可以从
    webpack.tests.config.js
    中删除这些加载程序

    启用热加载后,这是一个非常好的设置,因为我可以让我的应用程序和测试在不同的浏览器选项卡中运行,然后更新代码,并立即看到我的更改和测试重新运行

    您还可以运行
    npm run test
    ,通过命令行执行相同的测试


    希望这能有所帮助。

    我喜欢吉姆·克里特的答案,但由于某种原因无法在我的电脑上运行。使用以下两个配置文件,您可以通过以下方式运行应用程序:

    npm start              // then http://localhost:8080/bundle
    
    并使用以下工具运行测试:

    npm test              // then http://localhost:8081/webpack-dev-server/test
    
    两台服务器自动重新加载&&您可以同时运行这两台服务器

    配置文件 webpack.config.js package.json
    值得注意的是,这种方法要求您记住在集中索引文件中列出所有测试。如果您忘记了,测试将永远不会运行。其他方法(包括将Mocha配置为忽略网页包功能)不需要维护集中的测试列表。我建议采用这种方法:我不久前更新了我的答案,使用了更好的index.js版本,不需要导入每个测试模块。您可以使用
    require.context
    扫描所有测试。很棒的一点,吉姆,我错过了!也就是说,我选择了这条路线,因为它避免了为测试设置专用的webpack.config:@JimSkerritt我尝试cli'find./-name'*.test.js'| xargs mocha-R min-R babel/register',它说找不到模块babel/resgiter。你有一个简单的.test.js文件,我可以参考并了解如何编写它吗?
    module.exports = {
        entry: "./index.js",
        output: {
            path: __dirname + "/build",
            filename: "bundle.js"
        },
        module: {
            loaders: [
                { test: /\.css$/, loader: "style!css" }
            ]
        }
    };
    
    {
      "name": "2dpointfinder",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "start": "webpack-dev-server --inline",
        "test": "webpack-dev-server 'mocha!./tests/test.js' --output-filename test.js --port 8081"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "css-loader": "^0.19.0",
        "style-loader": "^0.12.4"
      },
      "devDependencies": {
        "mocha": "^2.3.3",
        "mocha-loader": "^0.7.1",
        "should": "^7.1.0"
      }
    }