0

所以我只是试图将 chai-as-promised 与 karma 和 webpack 一起使用,这就是我得到的。 在此处输入图像描述 我已经安装了 chai-as-promised、karma-chai-as-promised、sinon-chai、karma-sinon-chai、karma-webpack,所以我应该很好,但它在这里不起作用是我的 karma.config 文件

var webpackConfig = require('../../build/webpack.test.conf')

module.exports = function (config) {
  config.set({
    browsers: ['ChromeHeadless'],
    frameworks: ['mocha', 'chai-things', 'sinon-chai', 'chai-as-promised'],
    reporters: ['spec', 'coverage'],
    files: [
      '../../node_modules/babel-polyfill/dist/polyfill.js',
      './index.js'],
    preprocessors: {
      './index.js': ['webpack', 'sourcemap']
    },
    webpack: webpackConfig,
    coverageReporter: {
      dir: './coverage',
      reporters: [
        { type: 'lcov', subdir: '.' },
        { type: 'text-summary' }
      ]
    },
    client: {
      captureConsole: true
    }
  })
}
4

2 回答 2

0

karma-chai-as-promised通过将 Chai-as-promised 作为script元素放入窗口中,在您的测试中包含 Chai-as-promised。(请参阅此处。)但是,自Chai-as-promised 6.0以来,这已不再可行。此版本分发的代码取决于解析 CommonJSrequire调用的机器的可用性。它可能是 SystemJS 或 Webpack,或者你有什么,但必须有解决这些调用的东西。所以不可能只是将分布式代码放入网页中。

可能性:

  1. 强制karma-chai-as-promised使用旧版本的 Chai-as-promised。chai-as-promised是对等依赖项,karma-chai-as-promised因此您可以让项目设置早于 6 的版本。

  2. Drop karma-chai-as-promised,并让 Webpack 将其包含在您的测试包中。

于 2017-07-13T20:32:07.973 回答
0

我已将此添加为帮助文件

import chai from 'chai'
chai.should()
import chaiAsPromised from 'chai-as-promised'
chai.use(chaiAsPromised)

然后你可以将它用作

import './chaiAsPromised.helper'
于 2017-07-16T13:35:02.340 回答