jest
とenzyme
を使用して、antd
- 第3反応UIライブラリに依存する反応コンポーネントをテストしています。 説明のために、私は質問を表示するのに十分な公正な最小限のコードを生成します。ユニットテスト反応コンポーネントへの正しい方法
次のように私のtest
コンポーネントを参照してください:
import React from 'react';
import { Button } from 'antd';
function Test({onSubmit}) {
return (
<div>
<Button htmlType="submit" type="primary" />
</div>
);
}
export default Test;
Q1を:私はユニットテストは、対象を隔離し、他の依存関係をモックアップするために私たちを必要とするため、以下のようにボタンをモックアップ。 これは間違いありませんか?
__mocks__
antd.js
antd.js
import mockComponent from '../mockComponent';
const list = [
'Form',
'Input',
'Button',
'Spin',
'Icon'
];
const mockups = list.reduce((prev, next) => {
prev[next] = mockComponent(next);
return prev;
}, {});
mockups.Form.Item = mockComponent('Form.Item');
export const Form = mockups.Form;
export const Input = mockups.Input;
export const Button = mockups.Button;
export const Spin = mockups.Spin;
export const Icon = mockups.Icon;
mockComponent.js
import React from 'react';
export default function mockComponent (name) {
return props => React.createElement(name, props, props.children);
}
Q2。テストに合格しても、次の警告が出ます。どうすれば解決できますか?
test.spec.jsサイドノート
console.error node_modules/fbjs/lib/warning.js:36
Warning: Unknown prop `htmlType` on <Button> tag. Remove this prop from the
element. For details, see
in Button (created by Unknown)
in Unknown (created by Test)
in div (created by Test)
in Test (created by WrapperComponent)
in WrapperComponent
を警告
import React from 'react';
import { shallow, mount } from 'enzyme';
import renderer from 'react-test-renderer';
import Test from '../components/question';
describe('mount test',() => {
let wrapper;
let props;
let mountedLogin;
const test =() => {
if (!mountedLogin) {
mountedLogin = mount(<Test {...props} />);
}
return mountedLogin;
};
beforeEach(() => {
mountedLogin = null;
});
it('always render test as the root',() => {
const divs = test().find('div');
expect(divs.length).toBeGreaterThan(0);
});
});
、私は私のpackage.json
内の任意のjest
のconfigsを持っていません。
誰でも私にこれらを助けることができます。
感謝
本当にあなたの答えをありがとう。あなたは私の日を救う!! –