使用 React 故事书作为 Jest 测试
Using React stroybook as Jest test
我有一本 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
感谢您的帮助
更新
更新和工作 stroybook 作为测试 已在项目 react-outline
上实施
您可以 clone
它 (react-outline)、npm install
然后 npm test
来查看它的实际效果。
这是output on travis :)
如果您不关心 raw-source
并想嘲笑它。您可以使用 moduleNameMapper under your Jest setting within your 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
}
}
我有一本 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
感谢您的帮助
更新
更新和工作 stroybook 作为测试 已在项目 react-outline
上实施您可以 clone
它 (react-outline)、npm install
然后 npm test
来查看它的实际效果。
这是output on travis :)
如果您不关心 raw-source
并想嘲笑它。您可以使用 moduleNameMapper under your Jest setting within your 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
}
}