javascript - 用两个纯组件测试一个组件
问题描述
我有一个呈现图像横幅的组件。该组件利用数据专门在移动设备或桌面上呈现图像横幅。
我有两个纯函数组件来处理移动和桌面的情况。
这是它的外观示例
<ImageBanner>
{mobile?.image && <MobileBanner mobile={mobile} />}
{desktop?.image && <DesktopBanner desktop={desktop} />}
</ImageBanner>
MobileBanner
并且DesktopBanner
是仅返回 html 的纯功能组件。我想为上面的组件写一个笑话测试,我该如何为这个组件写一个测试ImageBanner
?
解决方案
有非常简单的方法: 1. 如果mobile.image
存在 -<MobileBanner>
通过mobile={mobile}
传递
it("renders MobileBanner is mobile passed`, () => {
const mobile = {image: 'test'};
const root = shallow(<YourComponent mobile={mobile} />);
expect(root.find(MobileBanner).prop().mobile).toEqual(mobile);
expect(root.find(DesktopBanner)).toHaveLength(0);
});
- 如果
desktop.image
存在 -<DesktopBanner
通过desktop={desktop}
传递
it("renders DesktopBanner is mobile passed`, () => {
const desktop = {image: 'test'};
const root = shallow(<YourComponent desktop={desktop} />);
expect(root.find(DesktopBanner).prop().desktop).toEqual(desktop);
expect(root.find(MobileBanner)).toHaveLength(0);
});
- 即使两者
mobile
都desktop
-undefined
没有错误(至少<ImageBanner>
呈现)
it("does not fail if neither mobile nor desktop prop passed", () => {
const root = shallow(<YourComponent />);
expect(root.find(MobileBanner)).toHaveLength(0);
expect(root.find(DesktopBanner)).toHaveLength(0);
expect(root.find(ImageBanner).exists()).toBeTruthy();
});
推荐阅读
- javafx - 暂停和播放媒体播放器JavaFX中的模数问题
- graph-algorithm - Dijkstra 算法的准确性如何?
- java - OnEditorActionListener 不适用于多行 EditText
- python - 简单的弹跳计算出错
- authentication - Keycloak 对没有角色的用户进行身份验证
- python - 基于不同列 pandas 的输入值
- algorithm - 查找不重叠的数组对的数量
- c# - 如何确定用户是否在 C# 中大写了字符串输入?
- c++ - 更新到 1.30 后,我无法在 Linux 上使用 VS Code 调试项目
- sed - sed:反斜杠撇号模式替换