Использование React Stroybook в качестве Jest теста
У меня есть сборник рассказов React и как его использовать в качестве тестовых случаев
У меня есть "loader.js", который импортирует все истории
import sourceBasic from 'raw-loader!./Basics/foo.js?sourceMap';
import Basic from './Basics/foo';
const tree = {
Basics:[
{
title:'Creating and applying a style',
source:sourceBasic, element:Basic
},
{ .... }
],
[ .... ],
....
}
export default tree
Я использую raw-loader
а также sourceMap
показать источник с элементом в сборнике рассказов
Это прекрасно работает.
Моя проблема, когда я пытаюсь импортировать с Jest
FAIL ./index.test.js
● Test suite failed to run
Cannot find module 'raw-loader!./Basics/foo.js?sourceMap' from 'load.js'
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:179:17)
at Object.<anonymous> (example/stories/load.js:2:34)
Тестовый файл
import React from 'react';
import renderer from 'react-test-renderer';
import load from './example/stories/load'
for(const groupName in load ){
const groupArray = load[groupName];
describe(groupName, () => {
for(const item of groupArray ){
test(item.title, () => {
const elem = renderer.create(item.element);
expect(elem.toJSON()).toMatchSnapshot();
}) // END test
} // END for
}) // END describe
} // END for
Спасибо за вашу помощь
ОБНОВИТЬ
Обновленный и работающий стройбук в качестве теста реализован на реактивной схеме проекта
Вы можете clone
это ( ответная схема), npm install
а потом npm test
чтобы увидеть это в действии.
Вот выход на Трэвис:)
1 ответ
Если вы не заботитесь о raw-source
и хочу издеваться над этим. Вы можете использовать moduleNameMapper в настройках jest в вашем package.json
Это позволит вам перехватить все require
/import
на основе регулярного выражения
Добавьте к вам package.json
...
"dependencies": {
...
},
...
"jest": {
"globals": {
"__TEST__": true
},
"moduleNameMapper": {
"\\.(css|jpg|png)$": "<rootDir>/empty-module.js",
"^raw-loader": "<rootDir>/empty-module.js"
},
"testPathIgnorePatterns": [
"/node_modules/"
],
"verbose": true
}
}
Надеюсь это поможет