什么是用于酶

时间:2016-11-08 22:22:52

标签: reactjs jasmine karma-runner karma-jasmine enzyme

我目前正在研究一个以业力,酶作为我的测试框架的反应项目。我已经阅读了https://github.com/airbnb/enzyme/blob/master/docs/api/shallow.md的酶文件。在本文档中,它说to.have.equal是检查值的API。见下面的例子。

expect(wrapper.find(Foo)).to.have.length(3);

但是当我写我的测试用例时,业力抱怨没有定义。经过一些搜索后,我必须使用下面的代码而不是to.have.equal

expect(wrapper.find(Foo).length).toEqual(1);

使用的酶版本是'^ 2.5.1'。我使用的是错误的版本吗?或者文件已过期?如果是这样,我可以在哪里找到正确的API文档?

- EDIT1-- 下面是我用来运行业力的命令:

./node_modules/karma/bin/karma start config/karma.conf.js --single-run --browsers PhantomJS

以下是package.json文件中列出的依赖项:

"devDependencies": {
"autoprefixer": "^6.3.6",
"babel-core": "^6.6.5",
"babel-eslint": "^6.1.0",
"babel-loader": "^6.2.4",
"babel-plugin-transform-class-properties": "^6.11.5",
"babel-preset-airbnb": "^2.1.1",
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"babel-preset-react-hmre": "^1.1.1",
"babel-preset-stage-2": "^6.13.0",
"classnames": "^2.2.5",
"cross-env": "^1.0.7",
"css-loader": "^0.23.1",
"enzyme": "^2.5.1",
"eslint": "^3.0.1",
"eslint-plugin-babel": "^3.0.0",
"eslint-plugin-react": "^5.2.2",
"eventsource-polyfill": "^0.9.6",
"extract-text-webpack-plugin": "^1.0.1",
"file-loader": "^0.9.0",
"html-webpack-plugin": "^2.10.0",
"jasmine-core": "^2.4.1",
"json-loader": "^0.5.4",
"karma": "^0.13.19",
"karma-babel-preprocessor": "^6.0.1",
"karma-browserify": "^5.0.0",
"karma-chrome-launcher": "^0.2.2",
"karma-jasmine": "^0.3.7",
"karma-mocha": "^0.2.1",
"karma-phantomjs-launcher": "^1.0.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^1.7.0",
"koa": "^1.2.0",
"koa-router": "^5.4.0",
"koa-serve-index": "^1.1.1",
"koa-static": "^2.0.0",
"koa-views": "^4.1.0",
"koa-webpack-dev-middleware": "^1.2.1",
"koa-webpack-hot-middleware": "^1.0.3",
"less": "^2.7.1",
"less-loader": "^2.2.3",
"loader-utils": "^0.2.16",
"phantomjs-prebuilt": "^2.1.4",
"postcss": "^5.1.2",
"postcss-display-inline-block": "^1.0.0",
"postcss-easysprites": "^0.1.7",
"postcss-import": "^8.1.2",
"postcss-less": "^0.14.0",
"postcss-loader": "^0.9.1",
"postcss-modules": "^0.5.0",
"precss": "^1.4.0",
"raphael": "^2.2.1",
"react-css-modules": "^3.7.6",
"react-hot-loader": "^1.3.0",
"rimraf": "^2.4.3",
"style-loader": "^0.13.0",
"url-loader": "^0.5.7",
"webpack": "^1.12.9",
"webpack-dashboard": "^0.0.1",
"webpack-dev-server": "^1.16.2",
"webpack-hot-middleware": "^2.12.2"

},

"dependencies": {
    "axios": "^0.15.2",
    "bootstrap": "^3.3.7",
    "history": "^3.0.0",
    "jquery": "^3.0.0",
    "react": "^15.3.2",
    "react-addons-test-utils": "^15.3.2",
    "react-bootstrap": "^0.30.5",
    "react-dom": "^15.0.1",
    "react-form": "^0.0.2",
    "react-paginate": "^2.2.3",
    "react-redux": "^4.4.5",
    "react-router": "^2.8.1",
    "redux": "^3.6.0",
    "redux-logger": "^2.7.4",
    "redux-router": "^2.1.2",
    "redux-thunk": "^2.1.0"
  }

1 个答案:

答案 0 :(得分:0)

Enzyme (and AFAIK the examples) was written with Mocha in mind:

  

Enzyme最初设计用于与Mocha [...]

一起使用

请参阅Karma example

it("contains spec with an expectation", function() {
  expect(mount(<Foo />).find('.foo').length).toBe(1);
});

作为docs state

  

酶与Karma兼容,但通常需要一点配置。

不要将测试运行器与渲染框架或断言库(如Chai)混为一谈。