2016-11-08 1 views
0

Ich arbeite derzeit an einem Reaktionsprojekt mit Karma, Enzym als mein Test-Framework. Ich habe das Enzymdokument von: https://github.com/airbnb/enzyme/blob/master/docs/api/shallow.md durchgelesen. In diesem Dokument heißt es, dass to.have.equal die API ist, um einen Wert zu überprüfen. Siehe folgendes Beispiel.Was ist die richtige API für das Enzym

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

aber wenn ich meine Testfälle schreiben, klagt Karma nicht definiert ist. Nach einigem Suchen muss ich den folgenden Code anstelle von to.have.equal verwenden.

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

Die verwendete Enzymversion ist '^ 2.5.1'. Habe ich eine falsche Version benutzt? Oder das Dokument ist veraltet? Wenn ja, wo finde ich das richtige API-Dokument?

--EDIT1-- Unten ist der Befehl, den ich Karma laufen verwendet:

"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" 

},

:

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

Nachfolgend finden Sie die Abhängigkeiten in meiner package.json-Datei aufgeführt ist

+0

Ist Enzyme ein Testframework und ein Karma-Renderingframework? –

Antwort

0

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

Enzym wurde ursprünglich entwickelt, um mit Mokka arbeiten [...]

die Karma example Siehe:

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

Da die docs state:

Enzym mit Karma kompatibel ist, aber erfordert oft ein wenig Konfiguration.

Nicht zusammenführen Testläufe mit Rendering-Frameworks oder Assertion-Bibliotheken (wie Chai) mit beiden.

+0

Bedeutet das, dass die API "to.have.length" von Mocha kommt und "toEqual" von Karma stammt? –

+0

@ZhaoYi \t Ich bin mir nicht sicher; Für Mocha benutze ich 'Chai' und ich weiß nicht wo die Trennlinie ist. 'toEqual' das gleiche, nicht sicher, ob es Karma oder Enzym ist. –

+0

Ich habe die beiden Beispiele 'Enzym-Beispiel-Mokka' und 'Enzym-Beispiel-Karma-Webpack' überprüft. Ich habe festgestellt, dass in der Testdatei von 'enzyme-exmaple-mocha' 'import {expect} von' chai '' statement ist, aber im anderen Beispiel gibt es keinen solchen Zustand. Ist das der Unterschied? –

Verwandte Themen