2017-02-02 17 views
0

をコンポーネントに反応する私のテストファイルインポートは、ここで絶対パスで

// /imports/components/main.test.js 
import React from 'react' 
import { shallow, mount } from 'enzyme' 
import Main from './main' 
import TextInput from "/imports/ui/textInput" 
... 

とmain.jsは

// /imports/components/main.js 
import { action1 } from "/imports/actions/myAction" 

を持っていますが、私は

を言って、テストを実行すると、エラーがスローされますCannot find module '/imports/actions/myAction' from 'main.js'

私がimport './main'にコメントすると、同じことがT extInput。私はnode_modulesにモジュールをインポートすることに問題はありません。

プロジェクトディレクトリからの絶対パスを使用してコンポーネントをインポートするようにJestまたはwebpackに指示するにはどうすればよいですか(つまりimport Foo from /imports/...)?

+0

テストファイルの同じレベルにimportsという名前のディレクトリがある場合は、次のようなドットにする必要があります。** import TextInput from "./imports/ui/textInput"** – Hosar

+0

申し訳ありません。私は基本的に内部/インポートであるコンポーネントとテストファイルのロケーションパスを追加しました。 – spondbob

+0

では、main.test.js内の "../ui/textInput"から 'import TextInput、' ../actions/myAction "から' import {action1} 'のように簡単にインポートできます。絶対パスでインポートする場合は、webpack.configでエイリアスを行い、imports/actions/myActionから 'import {action1} 'のようにインポートする必要があります。 – Vikramaditya

答えて

1

私のファイル構造は、あなたとまったく同じパターンです。 Jestに/で始まるインポートを使用するよう教えるために、私はbabel-plugin-module-resolverとその便利なrootオプションを使用します。

{ 
    "presets": ["es2015", "meteor"], 
    "plugins": [ 
    "transform-class-properties", 
    "transform-react-constant-elements", 
    "transform-react-inline-elements", 
    "transform-react-remove-prop-types", 
     ["module-resolver", { 
     "root": ["../"], 
     "alias": { 
     "react-router-dom": "react-router-dom/umd/react-router-dom.min.js", 
     "redux": "redux/dist/redux.min.js", 
     "react-redux": "react-redux/dist/react-redux.min.js" 
     } 
    }] 
    ] 
} 

私はそのルートの輸入をカスタマイズした流星を使用していますように、私は私が特定のを持ってできるように私のリポジトリのルートで.jestディレクトリに私の冗談の使用状況や設定を隠す:私の冗談のための.babelrcは次のようになります.babelrcメテオの衝突と危険を冒すことなく

+0

これは有望ですね。私はカップルの日後に行って、ここに更新を与えるでしょう。入力をありがとう! – spondbob

+0

残念ながら、このアップデートは遅くなりましたが、このソリューションは素晴らしいです!リゾルバモジュールをインストールしてルートを設定しました。これで 'import .. from/imports/foo'を使用できるようになりました。ありがとう。 – spondbob