TypeError:(0,_chai.describe)不是函数

时间:2016-07-27 13:26:13

标签: reactjs mocha chai babel

当我尝试使用mocha执行反应测试时,我收到以下错误:

/Users/niklaskiefer/Github/adal-fronted/test/CasesSpec.js:49
(0, _chai.describe)('Cases', function () {
                   ^

TypeError: (0 , _chai.describe) is not a function
    at Object.<anonymous> (CasesSpec.js:16:1)
    at Module._compile (module.js:541:32)
    at loader (/Users/niklaskiefer/Github/adal-fronted/node_modules/babel-register/lib/node.js:158:5)
    at Object.require.extensions.(anonymous function) [as .js] (/Users/niklaskiefer/Github/adal-fronted/node_modules/babel-register/lib/node.js:168:7)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.require (module.js:468:17)
    at require (internal/module.js:20:19)
    at /Users/niklaskiefer/Github/adal-fronted/node_modules/mocha/lib/mocha.js:220:27
    at Array.forEach (native)
    at Mocha.loadFiles (/Users/niklaskiefer/Github/adal-fronted/node_modules/mocha/lib/mocha.js:217:14)

测试位于test / CasesSpec:

import * as React from 'react'
import ReactDOM from 'react-dom'
import TestUtils from 'react-addons-test-utils'
import CaseActions from 'actions/CaseActions'
import CaseStore from 'stores/CaseStore'
import FilterStore from 'stores/FilterStore'
import { expect, it, before, describe } from 'chai'
import Immutable from 'immutable'
import Globals from 'config/globals'
import moment from 'moment'

var TestCases = require('./config/TestCases.js')

describe('Cases', function () {
  before(function (done) {
    this.timeout(1000)

    // fetch all data here because
...

我使用以下命令使用'npm test'

执行测试
NODE_PATH=./app mocha --compilers js:babel-core/register,css:test/config/css-compiler.js --recursive --require test/config/setup.js

CSS-compiler.js:

function donothing () {
  return null
}

require.extensions['.css'] = donothing
require.extensions['.less'] = donothing
require.extensions['.scss'] = donothing

setups.js:

// this handles setup of the fake DOM when the tests are
// run in Node

import jsdom from 'jsdom'

var FAKE_DOM_HTML = `
<html>
<body>
</body>
</html>
`

function setupFakeDOM () {
  if (typeof document !== 'undefined') {
    // if the fake DOM has already been set up, or
    // if running in a real browser, do nothing
    return
  }

  // setup the fake DOM environment.
  //
  // Note that we use the synchronous jsdom.jsdom() API
  // instead of jsdom.env() because the 'document' and 'window'
  // objects must be available when React is require()-d for
  // the first time.
  //
  // If you want to do any async setup in your tests, use
  // the before() and beforeEach() hooks.
  global.document = jsdom.jsdom(FAKE_DOM_HTML)
  global.window = document.defaultView
  global.navigator = window.navigator
}

setupFakeDOM()

几周前它正常工作,我们唯一改变的是我们使用standardJS作为新的代码风格。我们还从6.10.4更新了babel-core到6.11.4。我尝试了这个解决方案:Babel/Mocha: Mocha installed globally but describe() is not defined并删除'--require'。但这只会导致没有执行测试

1 个答案:

答案 0 :(得分:6)

itbeforedescribe是由Mocha自动添加到全局空间的符号。所以它们可以在测试中使用而无需导入任何东西。

chai当然与他们无关。所以:

import { expect } from 'chai'