0.0.11 • Published 6 years ago
auto-test-react-component v0.0.11
Automatic creation of a cortege of props, based on propTypes, for the tested component
Documentation
Module "auto-test-react-component/dist/prop-types-mock" mock module for "prop-types"
mocked function | variants values |
---|---|
PropsType.string | "","string",undefined |
PropsType.string.isRequired | "","string" |
PropsType.number | -10,0,10,undefined |
PropsType.number.isRequired | -10,0,10 |
PropsType.bool | false,true,undefined |
PropsType.bool.isRequired | false,true |
PropsType.func | ()=>{},undefined |
PropsType.func.isRequired | ()=>{} |
PropsType.array | [[],undefined] |
PropsType.array.isRequired | [[]] |
PropsType.object | {},undefined |
PropsType.object.isRequired | {} |
PropsType.oneOf(values) | values,undefined |
PropsType.oneOf(values).isRequired | values |
PropsType.oneOfType(propTypes) | map to all variants value for all propTypes and undefined |
PropsType.oneOfType(propTypes).isRequired | map to all variants value for all propTypes |
PropsType.shape(propTypes) | map to all variants value for all propTypes properties and undefined |
PropsType.shape(propTypes).isRequired | map to all variants value for all propTypes properties |
PropsType.arrayOf(type) | [type,undefined] |
PropsType.arrayOf(type).isRequired | [type] |
PropsType.element(type) | [\,undefined] |
PropsType.element(type).isRequired | [\,] |
module "auto-test-react-component"
- buildTestPropsCortege(JsxComponent): build all variants cortage props from React Component
- buildTestSimplePropsCortege(JsxComponent): build short variants cortage props from React Component
- findComponents(path): find components // Example: findComponents("test/*/.jsx");
config file .auto-test-react.js for rewrite options
config={
defaultCortage:{
string: ["","string"],
number: [-10,0,10],
bool: [false,true],
func: [()=>{}],
array: [[]],
object: [{}],
element: [<div/>]
},
shapeSimple: false // enable build cortege for shape in simpe mode
};
Example
Use "auto-test-react-component/dist/prop-types-mock" for mock "prop-types"
jest.mock("prop-types",()=>{
return require("auto-test-react-component/dist/prop-types-mock");
});
build cortage props from React Component
import AutoTestTools from "auto-test-react-component";
let autoTestTools = new AutoTestTools();
jest.mock("prop-types",()=>{
return require("auto-test-react-component/dist/prop-types-mock");
});
let props=autoTestTools.buildTestPropsCortege(JsxComponent);
test render component
import {shallow, mount} from "enzyme";
import AutoTestTools from "auto-test-react-component";
let autoTestTools = new AutoTestTools();
props.forEach(prop=>{
describe(`props: ${JSON.stringify(prop)}`,()=>{
it(`render ${JSON.stringify(prop)}`,()=>{
let wrapper = shallow(<JsxComponent {...prop} />);
});
});
find and test render components
import AutoTestTools from "auto-test-react-component";
let autoTestTools = new AutoTestTools();
jest.mock("prop-types",()=>{
return require("auto-test-react-component/dist/prop-types-mock");
});
let files=autoTestTools.findComponents("__test__/**/*.jsx");
describe("AutoTestComponent", () => {
files.forEach(file=>{
let JsxComponent=require(file).default;
let props=autoTestTools.buildTestPropsCortege(JsxComponent);
describe(`test render ${file}`,()=>{
{
props.forEach(prop=>{
it(`render ${JSON.stringify(prop)}`,()=>{
let wrapper = shallow(<JsxComponent {...prop} />);
});
});
}
});
});
});