2016-05-14 5 views
3

У меня проблемы с использованием Enzyme и Mocha для тестирования моего проекта React. У меня есть тест, как это:Mocha продолжает бомбить из-за абсолютных путей

import React from 'react'; 
import { expect } from 'chai'; 
import { shallow } from 'enzyme'; 

import { ChipInput} from '../client/components/Chips'; 

describe('<ChipInput />', _ => { 
    it('rocks', done => { 
    done(); 
    }); 
}); 

И когда ChipInput импортируется, что импорт файлов что-то с абсолютным путем, например, /lib/collections/tags, а затем Mocha ошибается, потому что он, по-видимому, только относительные пути. Как мне это сделать?

EDIT:

Фактическая ошибка:

Error: Cannot find module '/lib/collections/tags' 

Это происходит потому, что /tests/ChipInput-test.js импортирует ChipInput компонент из /client/components/Chips/index.js, который имеет следующие строки:

import React from 'react'; 
import { 
    MapsLocalOffer as TagIcon, 
    ImageRemoveRedEye as InsightIcon, 
    EditorInsertChart as TestIcon, 
    SocialPerson as UserIcon, 
} from 'material-ui/svg-icons'; 

import { Tag } from '/lib/collections/tags'; // error thrown here 
import { Insight } from '/lib/collections/insights'; 
// import { Test } from '/lib/collections/tests'; 
import Chip from './Chip'; 
import ChipDisplay from './ChipDisplay'; 
import ChipInput from './ChipInput'; 
import * as chipTypes from './chip-types'; 
+0

Это, вероятно, поможет увидеть ошибки вы получаете. – loganfsmyth

+0

Можете ли вы показать нам свой компонент «ChipInput»? – QoP

+0

@QoP Отредактировано сообщение – ffxsam

ответ

2

Вот решение, хорошо и просто!

https://github.com/mantrajs/babel-root-slash-import

В основном, INSTALL сказал пакет:

npm install babel-root-slash-import --save-dev 

Добавьте плагин .babelrc:

{ 
    "plugins": [ 
    "babel-root-slash-import" 
    ] 
} 

И это хорошо идти.

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/12384327) – Daniel

+0

@ Daniel Point принят. Ред. Если вы тот, кто был заблокирован и помечен для удаления, подумайте об удалении вашего downvote. – ffxsam

+0

выглядит многообещающим, я постараюсь завтра :) – Tom

1

Для всех, кто попал сюда из Google, в то время как ответ ffxsam будет работать, есть много способов сделать это. Требование узла позволяет устанавливать базу либо через переменную среды, либо программно, что позволяет использовать простые абсолютные пути, которые не требуют косой черты (require("my/module"); против require("/my/module");).

Я использую глотку как taskrunner, так что мой предпочтительный метод заключается в использовании app-module-path сделать следующее в верхней части моей gulpfile (это будет работать в любом месте, до тех пор, пока вы не сталкивались с абсолютными require ы еще):

require('babel-core/register'); //for mocha to use es6 

require('app-module-path').addPath(__dirname + '/src'); //set root path 

//I also use webpack to pull in other extensions, so I 
//want mocha to noop out on them 
require.extensions['.css'] = _.noop; 
require.extensions['.scss'] = _.noop; 
require.extensions['.png'] = _.noop; 
require.extensions['.jpg'] = _.noop; 
require.extensions['.jpeg'] = _.noop; 
require.extensions['.gif'] = _.noop; 

для более полного изношенном, проверить эту суть на GitHub пользователя branneman: https://gist.github.com/branneman/8048520

Смежные вопросы