mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-06-18 22:05:06 +08:00
Fix ActivityIndicator snapshot test, add toMatchShallowSnapshot
Summary: This diff adds a custom matcher which will wrap a given component and shallow render it, snapshotting the result with the formatting users will see when they do the same. I also update the ActivityIndicator test to use this new strategy, and add an additional check that the displayName is set. For context see: - https://github.com/facebook/react-native/pull/21950 - https://github.com/rajivshah3/rn-broken-snapshot/blob/broken-example/__tests__/App.spec.js#L3 - https://github.com/facebook/react-native/issues/21937 Reviewed By: TheSavior Differential Revision: D13326689 fbshipit-source-id: 8ed2302a8aad12962fa2498a46d2502ccfb5c737
This commit is contained in:
committed by
Facebook Github Bot
parent
3f0f25f73c
commit
c5b80062ea
@@ -6,20 +6,49 @@
|
||||
*
|
||||
* @format
|
||||
* @emails oncall+react_native
|
||||
* @flow
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const React = require('React');
|
||||
const ReactTestRenderer = require('react-test-renderer');
|
||||
const ActivityIndicator = require('ActivityIndicator');
|
||||
const render = require('../../../../jest/renderer');
|
||||
|
||||
describe('ActivityIndicator', () => {
|
||||
it('renders correctly', () => {
|
||||
const instance = ReactTestRenderer.create(
|
||||
it('should set displayName to prevent <Component /> regressions', () => {
|
||||
expect(ActivityIndicator.displayName).toBe('ActivityIndicator');
|
||||
});
|
||||
|
||||
it('should render as <ActivityIndicator> when mocked', () => {
|
||||
const instance = render.create(
|
||||
<ActivityIndicator size="large" color="#0000ff" />,
|
||||
);
|
||||
expect(instance).toMatchSnapshot();
|
||||
});
|
||||
|
||||
expect(instance.toJSON()).toMatchSnapshot();
|
||||
it('should shallow render as <ActivityIndicator> when mocked', () => {
|
||||
const output = render.shallow(
|
||||
<ActivityIndicator size="large" color="#0000ff" />,
|
||||
);
|
||||
expect(output).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('should shallow render as <ForwardRef(ActivityIndicator)> when not mocked', () => {
|
||||
jest.dontMock('ActivityIndicator');
|
||||
|
||||
const output = render.shallow(
|
||||
<ActivityIndicator size="large" color="#0000ff" />,
|
||||
);
|
||||
expect(output).toMatchSnapshot();
|
||||
});
|
||||
|
||||
it('should render as <View> when not mocked', () => {
|
||||
jest.dontMock('ActivityIndicator');
|
||||
|
||||
const instance = render.create(
|
||||
<ActivityIndicator size="large" color="#0000ff" />,
|
||||
);
|
||||
expect(instance).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`ActivityIndicator renders correctly 1`] = `
|
||||
exports[`ActivityIndicator should render as <ActivityIndicator> when mocked 1`] = `
|
||||
<ActivityIndicator
|
||||
animating={true}
|
||||
color="#0000ff"
|
||||
@@ -8,3 +8,47 @@ exports[`ActivityIndicator renders correctly 1`] = `
|
||||
size="large"
|
||||
/>
|
||||
`;
|
||||
|
||||
exports[`ActivityIndicator should render as <View> when not mocked 1`] = `
|
||||
<View
|
||||
style={
|
||||
Object {
|
||||
"alignItems": "center",
|
||||
"justifyContent": "center",
|
||||
}
|
||||
}
|
||||
>
|
||||
<RCTActivityIndicatorView
|
||||
animating={true}
|
||||
color="#0000ff"
|
||||
hidesWhenStopped={true}
|
||||
indeterminate={true}
|
||||
size="large"
|
||||
style={
|
||||
Object {
|
||||
"height": 36,
|
||||
"width": 36,
|
||||
}
|
||||
}
|
||||
styleAttr="Normal"
|
||||
/>
|
||||
</View>
|
||||
`;
|
||||
|
||||
exports[`ActivityIndicator should shallow render as <ActivityIndicator> when mocked 1`] = `
|
||||
<ActivityIndicator
|
||||
animating={true}
|
||||
color="#0000ff"
|
||||
hidesWhenStopped={true}
|
||||
size="large"
|
||||
/>
|
||||
`;
|
||||
|
||||
exports[`ActivityIndicator should shallow render as <ForwardRef(ActivityIndicator)> when not mocked 1`] = `
|
||||
<ForwardRef(ActivityIndicator)
|
||||
animating={true}
|
||||
color="#0000ff"
|
||||
hidesWhenStopped={true}
|
||||
size="large"
|
||||
/>
|
||||
`;
|
||||
|
||||
29
jest/renderer.js
Normal file
29
jest/renderer.js
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
* @emails oncall+react_native
|
||||
* @flow
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const React = require('React');
|
||||
|
||||
const TestRenderer = require('react-test-renderer');
|
||||
const ShallowRenderer = require('react-test-renderer/shallow');
|
||||
|
||||
const renderer = new ShallowRenderer();
|
||||
|
||||
export const shallow = (Component: React.Element<any>) => {
|
||||
const Wrapper = (): React.Element<any> => Component;
|
||||
|
||||
return renderer.render(<Wrapper />);
|
||||
};
|
||||
|
||||
export const create = (Component: React.Element<any>) => {
|
||||
return TestRenderer.create(Component);
|
||||
};
|
||||
Reference in New Issue
Block a user