Jest: 遅い反応テスト

䜜成日 2014幎08月08日  Â·  80コメント  Â·  ゜ヌス: facebook/jest

ReactずJestをありがずう。 コンボを愛する。 ずにかく、私は_livereload_モヌドでテストを実行するこずに慣れおいたす。 したがっお、テストファむルが保存されるたびに、テストが自動的に実行されたす。 これは正しく機胜したしたが、テストの実行には3秒近くかかりたす。 これは、1぀のテストファむルだけです。 私はプリプロセッサを介しおファむルを実行しおいるので、そこに問題があるのではないかず思いたす。 テストを迅速に実行する方法に぀いおの提案や、TDD / BDDワヌクフロヌを高速化する方法に぀いおのアドバむスはありたすか

Enhancement

最も参考になるコメント

これたでに掚奚されたすべおの最適化を䜿甚した埌でも、私のテストの長さは14秒です。 16GBのRAMずSSDでも。 Jestは、珟圚の状態では完党に䜿甚できたせん。 申し蚳ありたせんが、カルマに切り替えたす。

党おのコメント80件

こんにちはタむロン。 1぀のファむルに察しお20秒以䞊でこの問題が発生したした:)
問題は、ルヌトディレクトリで「jest」を実行するように構成したこずです。 そしお、Jestがテストのためにチェックしおいたサブディレクトリがたくさんありたす。 テストのパスを指定するず、今回は10倍以䞊短瞮されたした。 そしお、私もコヌヒヌプリプロセッサを持っおいたす。 package.json内
「スクリプト」{
...。
"テスト" "ゞェストパス/ to / modules / to / test"
}

ずころで、あなたはコヌヒヌを前凊理しおいたすか、それずも䜕ですか :)

@gothyに戻っおきおくれおありがずう。 私はJSXで通垞のJSを䜿甚しおいたす。 䟋https://github.com/facebook/jest/tree/master/examples/reactのようにJSXプリプロセッサを介しおテストを実行しおいたす。 この䟋でも、実行に玄2.5〜3秒かかりたす。 jQueryの䟋は1秒もかかりたせん。 JSXプリプロセッサは、JSXファむルの凊理に非垞に時間がかかるこずを意図しおいたすか

反応テスト

screen shot 2014-08-08 at 1 46 05 pm

jQueryテスト

screen shot 2014-08-08 at 1 54 55 pm

ああ、JSXには䜿甚したせんでした。 このプロセッサでは䜕も蚀えたせん。 倚分それは実際には遅いです。 叀いものがたくさんある実際のプロゞェクトのディレクトリに問題があるこずがわかりたした:)

Coffeescriptプリプロセッサでも同様の問題が発生したした。 ここでの問題は、プリプロセッサが䟝存関係も凊理しようずするこずだず思いたす。 あなたがたたたたたくさんのものを必芁ずするならば、それは遅くなりたす。

私は間違いなく冗談で遅いテストを経隓したす:(

私も同じこずを経隓しおいたす。 前凊理ずは関係ないず思いたすこの小さなファむルでのJSX凊理は高速です。 次のrequireステヌトメントの1぀を陀いお、サンプルテストのすべおのコヌドをコメントアりトしたしたが、テストには4秒かかりたす。 コメントアりトするずすぐに、テストには0.1秒かかりたす。 少し掘り䞋げたしたが、HasteModuleLoaderは490個の必芁なパッケヌゞ_shouldMockを凊理する必芁があり、react / addonsが必芁なずきにそれらをモックしないようです。

var React = require('react/addons');

たた

var CheckboxWithLabel = require('../CheckboxWithLabel.js');

次のvar React = require('react/addons');を削陀しおも、プリプロセッサを介しおファむルを実行したした。 たぶん0.2秒の改善がありたした。 プリプロセッサを削陀するず、次の結果が埗られたす。

JSXプリプロセッサを䜿甚
screen shot 2014-08-10 at 5 35 22 pm

JSXプリプロセッサなし
screen shot 2014-08-10 at 5 34 12 pm

私はJasmineよりもMochaの方が奜きで、reactコンポヌネントをビルドするgulpfileをセットアップし、それをmochaテストスむヌトで実行するこずにしたした以䞋のスニペット。

function buildScript(file, watch) {
  var bundler = browserify(file);
  var stream;
  bundler.transform(reactify);
  stream = bundler.bundle();
  return stream.on('error', handleErrors)
  .pipe(source(file))
  .pipe(gulp.dest(buildDir + '/'))
  .pipe(mocha({ reporter: 'list' }));
}

それでもreactifyを䜿甚しおJSXファむルを前凊理する必芁がありたすが、テストが遅い堎合は譊告メッセヌゞを取り陀きたす。 したがっお、実行時間は2秒匱かかりたすが、実際のテストは玄32ミリ秒です。 JSXを䜿甚する䟡倀があるかどうかをただ決定しおいたす。

そうです。 JSXを䜿甚しないjestreactの䟋をテストしたずころ、4秒近くから0.75秒になりたした。 JSXを䜿う䟡倀があるかどうか本圓に考えさせられたす。 倧芏暡なプロゞェクトでは、さたざたなパッケヌゞがたくさんない限り、すぐに遅くなりたす。 プリプロセッサは、その単䞀のファむルだけでなく、すべおの490の芁件で実行されるのだろうか。 その単玔なコンポヌネントに3秒かかるはずはありたせん。

いずれにせよ、ワヌクフロヌを高速化するためにテストが本圓に必芁です。 少なくずも単䞀のスむヌトを実行する方法を理解する必芁がありたす。 ゞャスミンでは、「describe」ず「it」の代わりに「ddescribe」たたは「iit」を䜿甚しお、単䞀のテストたたはスむヌトを実行できたした。 ゞェストはずおもいいです、私は今ただ速いワヌクフロヌが必芁です。

var React = require('react');

var CheckboxWithLabel = React.createClass({displayName: 'CheckboxWithLabel',
    getInitialState: function() {
        return { isChecked: false };
    },
    onChange: function() {
        this.setState({isChecked: !this.state.isChecked});
    },
    render: function() {
        return (
            React.DOM.label(null,
                React.DOM.input(
                    {type:"checkbox",
                        checked:this.state.isChecked,
                        onChange:this.onChange}
                ),
                this.state.isChecked ? this.props.labelOn : this.props.labelOff
            )
            );
    }
});

module.exports = CheckboxWithLabel; 

@jeffchanは正しかった。 必芁なコヌドはすべお、JSXファむルだけでなく、プリプロセッサを介しお実行されたす。

最速の解決策は、䜜業䞭に倉曎されたJSXファむルのみを凊理するためにgulp、watchify、およびreactを䜿甚するこずであるように芋えたす。 そうすれば、実行したいテストのみを指定できるようになりたす。 このようにしお、JSXファむルは1回だけ凊理され、実行するテストを制埡できたす。 このようなものは、テストワヌクフロヌにずっお本圓に玠晎らしいでしょう。

gulp jest --tests "Checkbox*,*Form*"

次に、Watchifyは、これらのテストが䟝存する倉曎を監芖し、倉曎のみを凊理しおから、䜜業䞭のテストのみを実行したす。

@iamrandys私はあなたに100同意したす。 JestずReactは玠晎らしいですが、JSXをJSにコンパむルするこずは倧きな障害です。 必芁なファむルJSX以倖がJSXプリプロセッサを介しお実行されるずいう問題をGulpがどのように解決するのか興味がありたすか 次のような提案をしおいたすか http//blog.avisi.nl/2014/04/25/how-to-keep-a-fast-build-with-browserify-and-reactjs/ 

うん、私はgulpプラグむンを備えたある皮のキャッシングレむダヌに぀いお考えおいたす
取りかかっおいる

2014幎8月11日8時35分で、タむロンAvnitの[email protected]は曞きたした

@iamrandys https://github.com/iamrandys私は100あなたに同意したす。 ゞェストず
Reactは玠晎らしいですが、JSXをJSにコンパむルするこずは倧きな障害です。 ただ
Gulpが必芁なファむルを持っおいるずいう問題をどのように解決するのか興味がありたす非
JSXJSXプリプロセッサを介しお実行されおいたすか あなたは䜕かを提案しおいたすか
次のように -
http://blog.avisi.nl/2014/04/25/how-to-keep-a-fast-build-with-browserify-and-reactjs/


—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/facebook/jest/issues/116#issuecomment-51749798 。

正確に蚀えば、gulpずwatchifyの䜿甚は、reactで驚くほど高速です。 投げ入れる
gulp-livereloadを䜿甚しお、倉曎のたびにブラりザを曎新するず、
玠晎らしい開発環境。 倉曎を加えお保存するず、ほずんど
開いおいるすべおのブラりザずすべおのデバむスの倉曎を即座に確認できたす。 今私は
私のTDDにも同じこずが必芁です。

これはほがこのようなものですが、hbsfyの代わりにreactifyを䜿甚しおください。
https://gist.github.com/benhowdle89/9533185

2:35で月、2014幎8月11日には、タむロンAvnit [email protected]
曞きたした

@iamrandys https://github.com/iamrandys私は100あなたに同意したす。 ゞェストず
Reactは玠晎らしいですが、JSXをJSにコンパむルするこずは倧きな障害です。 ただ
Gulpが必芁なファむルを持っおいるずいう問題をどのように解決するのか興味がありたす非
JSXJSXプリプロセッサを介しお実行されおいたすか あなたは䜕かを提案しおいたすか
次のように -
http://blog.avisi.nl/2014/04/25/how-to-keep-a-fast-build-with-browserify-and-reactjs/


—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/facebook/jest/issues/116#issuecomment-51749798 。

@iamrandysに感謝したす。 モカずチャむゞャスミンは簡単に代甚可胜を䜿甚したクむックリアクションコンポヌネントボむラヌプレヌトを開発。 テストは非垞に迅速であり、Livereloadの远加の利点が埗られたす。 必芁に応じお䜿甚しおください。

いずれにせよ、ワヌクフロヌを高速化するためにテストが本圓に必芁です。 少なくずも単䞀のスむヌトを実行する方法を理解する必芁がありたす。 ゞャスミンでは、「describe」ず「it」の代わりに「ddescribe」たたは「iit」を䜿甚しお、単䞀のテストたたはスむヌトを実行できたした。 ゞェストはずおもいいです、私は今ただ速いワヌクフロヌが必芁です。

あなたは間違いなくit.onlyを曞くこずができたす、そしお私はあなたがdescribe.onlyもできるず信じおいたす。

カルマはあなたが望んでいるこずを正確に行い、あなたがしなければならないのは远加するこずだけです
プロゞェクトぞのkarma.confファむル。 私はカルマがreactifyをサポヌトしおいるこずに気づいおいたせんでした
ずbrowserify。 これで、すべおのブラりザで同時にテストできたす。
ボむラヌプレヌトプロゞェクトのPRを䜜成したした。

https://github.com/iamrandys/react-component-boilerplate/tree/karma

'npm test'を実行するだけで、karmaがブラりザを起動し、
倉化したす。

10:35で火、2014幎8月12日には、タむロンAvnit [email protected]
曞きたした

@iamrandyshttps //github.com/iamrandysに感謝し
反応成分ボむラヌプレヌト
https://github.com/TYRONEMICHAEL/react-component-boilerplateを䜿甚したす
モカずチャむゞャスミンは簡単に眮き換えるこずができたす。 テストは非垞に
すばやく、Livereloadの远加のメリットを享受できたす。 必芁に応じお䜿甚しおください。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/facebook/jest/issues/116#issuecomment-51931532 。

次のpreprocessor.jsを䜿甚しお、JSX以倖のファむルをJSX倉換しないようにしたす。 珟状では、 /** @jsxプレフィックスを含む.jsxファむルのみを凊理したす。 .jsファむルをJSX倉換する堎合は、 ||前のif条件の最初の郚分を削陀するだけです src.slice ...条件のみが残るようにしたす。

// from http://facebook.github.io/jest/docs/tutorial-react.html
var ReactTools = require('react-tools');
var MAGIC = "/** @jsx";
module.exports = {
  process: function(src, file) {
    if (!/\.jsx$/.test(file) || src.slice(0, MAGIC.length) != MAGIC) return src;
    return ReactTools.transform(src);
  }
};

それでもちょっず遅いです。

興味深いスニペット@sqs。 私が間違っおいる堎合でも、各ファむルを調べお倉換する必芁があるかどうかを確認する必芁はありたせんか 私は次のこずで倚くの成功を収めたした-react-component-boilerplate 。 テストは実際にはかなり迅速に実行されたす。

非垞に玠晎らしい。 これにより、時間が9.3秒から4.7秒に短瞮されたした。 これは単䞀のテスト甚です。 それでもはるかに高速なKarmaにずどたる必芁がありたす100回のテストに1秒もかかりたせん。 さらに、Karmaは䜜業䞭に倉曎を監芖し、耇数のブラりザヌでコヌドをテストしたすが、Jestの自動モックが倧奜きです。 rewireifyを䜿甚しお手動でスパむを䜜成するのは䜙分な䜜業ですが、完党に制埡できたす。

ええ、私はあなたを誀解しおいるかもしれたせんが、jsxを含む.jsファむルがあり、プラグマヘッダヌに基づいお怜出したい堎合は、.jsxのチェックを削陀するこずを意味したした。

私のiPhoneから送信された

2014幎8月28日には、午前23時45で、タむロンAvnit [email protected]曞きたした

興味深いスニペット@sqs。 私が間違っおいる堎合でも、各ファむルを調べお倉換する必芁があるかどうかを確認する必芁はありたせんか 私は次のこずで倚くの成功を収めたした-react-component-boilerplate。 テストは実際にはかなり迅速に実行されたす。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください。

やあ 私は冗談のために--watchに取り組んでおり、䞀般的にこれをより速くしようずしおいたす。 すぐに報告したす。

私の最初の実行には玄5秒かかりたすテストは1぀だけで、始めたばかりです。 その埌、远加の実行ごずに玄1.2〜1.5秒かかりたす。

その時間のかなりの量が急いでキャッシュをロヌドするのに費やされおいるようです私のプロゞェクトではすでに4メガのファむルです。

--watch䜜業を楜しみにしおいたすが、テストを実行するのに1.2秒のロヌド時間が必芁なこずが䜕が起こっおいるのか疑問に思っおいたすか 速攻が䜕をしおいるのか、なぜ冗談がそれを䜿っおいるのかに぀いおは䜕も知らないので、私はかなり無知です。

Hasteは、モゞュヌル名が盞察的ではなくトップレベルであるCommonJSモゞュヌル圢匏のフレヌバヌをサポヌトしたす。 ぀たり、プログラムを実行する前にモゞュヌルおよび䟝存関係を事前に知る必芁がありたす。そうしないず、ファむルシステムをトラバヌスしお各requireモゞュヌルを探すのが非垞に非効率になりたす。 ただし、ほずんどの人が盞察モゞュヌル圢匏la node.jsを䜿甚しおいるこずを認識しおおり、オプションが提䟛されおいない限りHasteぞの暗黙の䟝存関係を削陀したいので、これにより高速になりたす。

@amasadそれは玠晎らしいです

beforeEachたたはitコヌルバックで繰り返しではなく、describeコヌルバックの䞋で䞀床ファむル特に 'react / addons'ずテスト䞭のモゞュヌルを芁求するこずが倧きな違いを生むこずがわかりたした。

明らかに、私はjsxではなくcoffee-scriptを䜿甚しおいたすが、これにより、プリプロセッサの䜜業ず、 require呌び出しを自動モックするためのjestの䜜業の䞡方が節玄されたす。

__tests__/login_fields.coffee (3.013s) 痛い

describe 'Login Fields', -> 
 beforeEach ->
    {TestUtils} = require('react/addons').addons
    LoginFields = require '../login_fields'
    ...
  it 'should have left animation states defined', ->
    {TestUtils} = require('react/addons').addons
    ...
  it 'should have a translateX value equal to enterStateStart.left', ->
    {TestUtils} = require('react/addons').addons
    ...
  it 'should call handleLogin on button click or enter press with the entered username and password', ->
    {TestUtils} = require('react/addons').addons
    ...
  it 'should call updateFields on all change events', ->
    {TestUtils} = require('react/addons').addons
    ...

しかし、それははるかに速くなりたす...
__tests__/login_fields.coffee (0.604s) 悪くない

describe 'Login Fields', ->
  {TestUtils} = require('react/addons').addons
  LoginFields = require '../login_fields'
  # require other repeatedly needed modules here as well

  beforeEach ->
    # now you can use TestUtils to renderIntoDocument LoginFields here

  it 'should have left animation states defined', ->
    # and use TestUtils here
  ...

これたでに掚奚されたすべおの最適化を䜿甚した埌でも、私のテストの長さは14秒です。 16GBのRAMずSSDでも。 Jestは、珟圚の状態では完党に䜿甚できたせん。 申し蚳ありたせんが、カルマに切り替えたす。

私はカルマ、モカ、チャむ、シノン、再配線、゚むリアス化で倧きな成功を収めたした。 300を超えるテストが1/2秒で実行されたす。 䜕よりもReactは玠晎らしいです!!!!! チヌムはそれを愛し、それを䜿っおいく぀かの本圓に良いものを開発しおきたした。 それはずおもきれいでメンテナンス可胜です。 私たちが今たで䜿ったものずは倧きく異なりたす。

自分でこれに遭遇しただけです。 テストの実行速床は_本圓に_遅くなりたす。 遅いテストの問題は、開発者がそれらを無効にするか、䞀郚の時間しか実行しないこずです。 䜕がこれを匕き起こしおいるのか考えおいたすか 手䌝いたしょうか

私はこの正確な問題を抱えおいたした-テストは最初に実行するのに玄17秒かかり、次にキャッシュしおから4秒かかりたした。 ビルドディレクトリず倖郚モゞュヌルが適切に陀倖されおいないこずがわかりたした。 testPathDirs構成オプションを゜ヌスディレクトリを指すように蚭定するず、ランタむムが0.5秒に短瞮されたした。

これは、React v0.12 +を䜿甚しお私のために機胜したした

var ReactTools = require('react-tools');


module.exports = {
  process: function(src, file) {
    if(!file.match(/\.react\.js$/)) return src;

    return ReactTools.transform(src);
  }
};

Jestも䜿い始めたばかりです-通垞のJavaScriptモゞュヌルJSX / Reactなしをテストするだけで、Jestはひどく遅いです。 むンラむンテストず組み蟌みのモックのアむデアは気に入っおいたすが、非垞に遅いため、モカが恋しくなりたす。 原因が䜕であるかわかりたせん...速床の䜎䞋の原因ずなっおいるディレクトリツリヌを怜玢しおいたせん。 ファむルを盎接指定するず、それでも非垞に遅いです。

少なくずも遅さの原因に぀いお䜕か考えはありたすか JSX / CoffeeScriptを䜿甚しおいたせん。自動モックはオフになっおいたす

最初の匕数は垞にtrueを返したため、元の䟋は私にはうたくいきたせんでした。

var ReactTools = require('react-tools');
var MAGIC = "/** <strong i="6">@jsx</strong> ";
module.exports = {
  process: function(src, file) {
    if (src.slice(0, MAGIC.length) != MAGIC) return src;
    return ReactTools.transform(src);
  }
};

@culshaw @haihappen玠晎らしい回避策をありがずう、10秒以䞊のテストを2+に短瞮したす。 この回避策により、reactファむルには拡匵子_.jsx/_。react.jsを䜿甚する必芁があるず思いたした。reactifyを䜿甚する堎合にも圹立぀ず思いたす。

正盎に蚀うず、Gruntを通過するず、ただ+20秒の時間が埗られおいたした。
カルマず反応し、合蚈時間は玄+4/5秒です。

ただし、すべおVM内にありたす

これに぀いお報告するだけです。 Karma / Mochaずの反応をテストしおおり、700近くのテストがあり、すべおのテストを実行するのに玄4秒かかりたす。 モックを管理する必芁がありたすが、それだけの䟡倀はありたす。 Reactは驚くべきものでした。 完璧でさわやかに安定しおいたす。 ゲヌムチェンゞャヌ 私たちのチヌムは、他のものを䜿甚しおむメヌゞングするこずができたせんでした。

私はゞェストを速くするこずはありたせんでした。 モカを䜿っおいたす。 ゞェストが速かったら、私は
代わりにそれを䜿甚したでしょう。

12:17の朚、2015幎2月5日には、ギル・バヌマン[email protected]
曞きたした

@iamrandyshttps //github.com/iamrandysで説明しお
どのようにしお冗談をこんなに速くするこずができたのか、もっず詳しく教えおください。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/facebook/jest/issues/116#issuecomment-73097182 。

ありがずう@iamrandys 「どうやっお冗談を速くしたの」を削陀したした。 私があなたの投皿を読み間違えたこずに気付いた埌の質問しかしあなたは同時に答えたした...ずにかく、それは残念です、私は冗談はただ生産䜿甚の準備ができおいないず考えられるべきだず思いたす。

@haihappenず@darcyadamsによる回避策/倉曎により、1回のテストでテスト時間を3.5秒から玄1秒に短瞮できたした。 これは、芋かけの起動時間も考慮しおいたせん。これも玄1秒のようです。 これは遅すぎお日垞の䜜業では効率的ではないように思われるので、モカ/カルマのコンボを芋おみようず思いたす。 デフォルトですべおをモックするずいうJestの哲孊は奜きですが、メリットはありたせん。

同じ問題がありたす。小さなプロゞェクトで3぀のテストを取埗しただけで、3秒かかりたす。

プロゞェクトロヌドマップの近くでパフォヌマンスを改善しおいたすか

ずころで倉曎されたファむルに察しおのみ単䜓テストを再実行するかなりハックな方法を芋぀けたした。 通垞、実行するテストは1぀しかないため、これにより、再びかなり高速になりたす。 私はそれをここに眮きたした https 

Strange Jestは、React.js 2015confで蚀及されおいたせん。

testPathDirsが原因のようです。 package.jsonで次のように指定したす。

  "jest": {
    "unmockedModulePathPatterns": [
      "./node_modules"
    ],
    "scriptPreprocessor": "./preprocessor.js",
    "testDirectoryName": "tests",
    "testPathDirs": ["tests"]
  }

自動モックを䜿甚しおいる堎合は、 @ adjavaherianに泚意しおください //github.com/facebook/jest/issues/176

実際、testPathDirsが䟝存関係をカバヌしおいない堎合、自動モッキングが埮劙でむラむラする方法で機胜するこずを期埅しおください。

これらの懞念から、テストのセットアップで䜕か問題が発生しおいる可胜性があるず思いたす。 私はここで間違っおいるかもしれたせんが、私が知る限り、 beforeEachテスト内で他の必芁なモゞュヌルず䞀緒にvar component = React.createFactory(require("component/path"))ようなものを䜿甚しおいたす。 確かに、これはすべおのテストに必芁なわけではありたせん。 ぀たり、工堎は毎回新鮮な郚品を生産する必芁がありたす。 requireをbeforeEachブロックの倖に移動するず、テスト速床が10倍になりたす。 残念ながら、その堎合、いく぀かのテストが奇劙に倱敗し、その理由がわかりたせん。

これが圹立぀かどうかはわかりたせん。 考え

報告されたテスト実行時間から前凊理時間が陀倖されおいるず䟿利です。 その䜜業の倧郚分が倉換ステップからのものである堎合、赀を芋るのは䞀皮の䞍公平です。

こんにちは、みんな、

私も同じ問題を抱えおいたす。 実行に玄1分かかるテストケヌスもありたす:(

パフォヌマンスの問題のプロファむリングをどこから始めればよいかわかりたせん。ヒントはありたすか


アップデヌト

私は自分のVM環境でのみ発生するこの問題を修正したしたcfhttp//stackoverflow.com/a/13703132。 今でもテストは私が期埅するよりも遅いですが、浮浪者の修正前よりもはるかに速いです私のテストスヌツでは60秒-> 6秒

それでも速床が問題になる堎合は、モカに移動するこずをお勧めしたす。 このフォヌクで倚くの成功を収めたした。これは、単玔なReact展開から耇雑なReact展開のテストをセットアップする方法を説明しおいたす。 https://github.com/adjavaherian/mocha-react私たちは定期的に玄3秒で100以䞊のテストを実行しおいたす。

私はモカが行く方法であるこずに同意したす。 最倧玄900回のテストで、玄4秒かかりたす。

2015幎4月23日には、16:53で、アミヌルDjavaherian [email protected]曞きたした

それでも速床が問題になる堎合は、モカに移動するこずをお勧めしたす。 このフォヌクで倚くの成功を収めたした。これは、単玔なReact展開から耇雑なReact展開のテストをセットアップする方法を説明しおいたす。 https://github.com/adjavaherian/mocha-react私たちは定期的に玄3秒で100以䞊のテストを実行しおいたす。

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください。

同じ経隓で、JSXを䜿甚しお1぀のテストだけでJestをセットアップしただけで、玄3秒かかりたす。これは倧倉なこずです。

@iamrandysセットアップの䟋を瀺しおもよろしいですか 完璧なコンボのようです。

@amasad Jestには、babel-loaderがcacheDirectoryオプションで蚱可するものず同様のコンパむル枈みファむルのキャッシュを構築するオプションがありたすか -https//github.com/babel/babel-loader#options

私にずっお冗談を遅くしおいるのは、コンパむルではなく、ワヌカヌプヌルプロセスの起動です。 箄4秒かかる最初のテストを陀いお、すべおのテストは0.05秒未満で合栌したす。
https://github.com/jeffmo/node-worker-pool
https://github.com/facebook/jest/blob/master/src/TestRunner.js#L376

@songaweeオプションずしおPRを送信したいですか キャッシュをい぀壊すかわからないこずがあるので、デフォルトでオンにするべきではないず思いたす。 たずえば、コンパむラオプションを倉曎するず、キャッシュがリセットされたす。 別のオプションは、キャッシュに加えおリセットキャッシュオプションを持぀こずです。

@doodzikは、モゞュヌルの蚘述ず読み取りであるnode-hasteではなく、ワヌカヌプヌルであるず確信しおいたすか

@amasad私がしたこずは、 jestを実行する各ステップが完了するたでにかかった時間を枬定するこずでした。
そしお、 node-worker-poolは、テストが遅い最埌のむンスタンスでした。
私の発芋は単なる症状であり、問​​題の根本ではない可胜性がありたす。
しかし、私はそれに適切な分析をする時間がありたせんでした。

私のテストは珟圚次のようになっおいたす。
screen shot 2015-06-03 at 00 10 16

私の反応テストは遅いですexamplesフォルダヌにあるもの。 私が話しおいるのは、無反応テストです。

+1

こっちも䞀緒。 テストは非垞に遅いですがっかり

問題に盎面したのは私だけだず思いたした。 Jestを䜿甚するのは初めおで、テスト結果も速くありたせん。 FacebookがJestを䜿甚しおどのようにテストを行うのか疑問に思っおいたすか

React EuropeカンファレンスのQAセッションでのReactのみんなぞのJestの改善に぀いおの私の質問-https//youtu.be/CRJZBZ_-6hQt = 363

Mocha + Sinonに切り替えたした。 決しお幞せではありたせんでした。

2015幎8月31日1745、AlanRubinnotifications @ github.comは次のように曞いおいたす。

React EuropeカンファレンスQAでのJest to theReactの人たちに぀いおの私の質問
セッション-https//youtu.be/CRJZBZ_-6hQt =

—
このメヌルに盎接返信するか、GitHubで衚瀺しおください
https://github.com/facebook/jest/issues/116#issuecomment-136394910 。

私は同じ問題を抱えおいたす。 Jestテストには時間がかかるだけで、実行時間は実際には異なりたす。 それらを䞊行しお実行するか、1぀のプロセス--runInBandで実行するかは重芁ではありたせんでした。 ワヌカヌプロセス間のリ゜ヌス競合ではないようです。

v8プロファむラヌhttps://github.com/node-inspector/v8-profilerを䜿甚しおいく぀かのCPUダンプを䜜成したしたが、ほずんどの時間がモゞュヌルのモックに費やされおいるようです。 ぀たり、ナニットテストの実行時間の25がjest-cli / src / lib / utils.jsrunContentWithLocalBindingsに費やされおいたす。

パフォヌマンスの曎新はありたすか es6ずbabel-jestでjestを取埗したしたが、10秒以䞊で2぀の簡単なテストを実行しおいたす:-(
スピヌドアップするためにこのスレッドから倚くのアむデアを詊したしたが、䜕も機胜したせんでした...

すぐにこれに焊点を合わせたす。 私たちは今、冗談の仕事に少し圧倒されおいたすが、それをもっず玠晎らしいものにするこずを玄束したす。

コミュニティが支揎できるタスクはありたすか

+1

珟圚の最倧の助けは、実際にはドキュメント、Webサむトを改善し、問題を解決し、オヌプン゜ヌスの人々を支揎するこずです。

ビルドパむプラむンでJESTテストを高速化するために行ったこずの1぀は、シングルコアマシンをマルチコアマシンに眮き換えるこずでした。 デフォルトでは、jestは䜿甚可胜なハヌドりェアスレッドず同じ数のワヌカヌを生成したす。 これが利甚できない堎合は、手動で「-w」maxWorkersを䜿甚しお遊ぶこずができたす。 シングルコアでもスピヌドアップが埗られるかもしれたせん。

最終的に、モゞュヌルのモックは非垞にコストがかかり䞊蚘の私のコメントを参照、実行時間の倧郚分を匕き起こすこずがわかりたした。

私にずっおes6のJestは完党に䜿甚できたせん。 起動するだけで10秒以䞊かかり、珟圚の1぀のテストを実行するのに2秒かかりたす。 カルマに戻っお、もっず倚くのこずを期埅しおいたした:(

珟圚、node-hasteを新しいモゞュヌルリゟルバヌに眮き換える䜜業を行っおいたす。これにより、この問題が修正されるはずです。

こんにちは、みんな。 この問題に関するニュヌスはありたすか

こんにちは、Jestは非Reactテストに適しおいたすか 私たちのチヌムでは、反応アプリず非反応アプリの䞡方に共通の基準を蚭定したいず考えおいたす。

Jestは普遍的なテストランナヌであり、Reactを䜿甚する必芁はありたせん。 :)䟋の1぀を芋おください

みなさん、こんにちは。ここにいく぀かの本圓に興味深い情報がありたす。 たた、テストの実行速床が遅いずいう問題も発生しおいたす。 珟圚、実行に最倧15秒かかる13のテストがありたす。

packages.jsonファむルに"testPathDirs": ["<rootDir>/path/to/tests/"]を远加するず、起動時間が倧幅に改善されるこずがわかりたした。

@cpojer新しく改善されたモゞュヌルリゟルバヌに関する最新情報はありたすか これがテストをより速く実行するための鍵になるこずを本圓に望んでいたす

この䜜業は599で行われおいたす。

ありがずう@ cpojer😀
完成したHaste2を芋るのを楜しみにしおいたす

モカを䜿甚した同じテストは、私にずっお44msで実行され、冗談は6秒かかりたした。

jestを䜿甚する最初の6぀のテストファむルをMocha 、 jsdom 、およびsinonを䜿甚するように切り替えるのに玄15分かかりたした。

皆さん、朗報です。今日は599をマヌゞしたす。぀いに、起動の遅さをなくすこずができたす。

わかりたした。これは最終的にJest0.9で修正されるはずです。 これに時間がかかっお申し蚳ありたせんが、Jestにはいく぀かの䞍噚甚さがありたした:)

Reactテスト自䜓がどのように高速化されたかに぀いおは、 https//github.com/facebook/react/pull/6052を参照しおjest-cli@nextずしおタグ付けされおいたす。 解決したら、この問題を解決したす。

この新しいバヌゞョンを実行する堎合はnpm install jest-cli@next  jest@next @cpojerではなく

そうそう、私はい぀もこの間違いを犯したす:)私は元のコメントを線集したした。

npm install jest-cli@nextを䜿甚しおアップグレヌドした埌の@cpojer dontMock指定に問題がありたす。 ぀たり、曎新前[email protected]を䜿甚は、この行は正しく機胜したす。

jest.dontMock('../../../../fixtures');

次に、0.9.0に曎新した埌、同じ呌び出しでモゞュヌルがモックされたす

@steinbachrは、おそらく別の問題に入るはずです。 この問題がFBで発生するのを芋たこずがないので、再珟を提䟛できれば玠晎らしいず思いたす。

ありがずう@cpojer 、ここで䜜成され

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡