React应用程序中className Test实用程序的替代方案
Alternative of className Test utility in React application
在移动外部CSS文件并重构为JS对象以支持react-inline
之后,我在React应用程序中编写测试用例时遇到了一些困难
早些时候,对于我的测试用例,我一直在使用className
来检查预期的class
是否存在于我的组件中。由于我不再使用类,我在重构测试时遇到了一些困难。例如,如果在我的化身组件中传递rounded
样式的道具,我一直在检查类avtar
和img-rounded
是否存在。
it("should render image with rounded style if style is 'rounded'", done => {
let user = { displayName: "Foo", avatar: { url: "http://some.url"} };
renderer.render(
<UserAvatar user={user} style="rounded" />
);
let result = renderer.getRenderOutput();
expect(result.type).toEqual("img");
expect(result.props.className).toEqual("avatar img-rounded");
expect(result.props.src).toEqual("http://some.url");
done();
});
现在,我将基于传递的style
道具将关联的样式直接添加到react组件中。
_getAvatarStyles() {
let avatarStyle = {
borderRadius: "50%"
};
if (this.props.style === "circle" || this.props.style === "text-only" || this.props.style === "initials") {
avatarStyle = {
borderRadius: "50%"
};
} else if (this.props.style === "rounded") {
avatarStyle = {
borderRadius: "10%"
};
}
return avatarStyle;
},
在重构之前,我将className
直接添加到组件中,如下所示:
_getAvatarClasses() {
return classNames({
"avatar": true,
"img-rounded": this.props.style === "rounded",
"img-circle": this.props.style === "circle"
});
},
有没有什么方法可以直接检查img
标签中的style
属性。例如,如果组件具有borderRadius: "50%"
,则为圆形化身返回true
,如果组件有borderRadius: "10%"
,则为圆角化身返回true
您是否考虑过使用Sinon.js这样的测试库并监视函数以测试其返回值?它基本上会完成同样的事情,看起来像这样:
it("should render image with rounded style if style is 'rounded'", done => {
let user = { displayName: "Foo", avatar: { url: "http://some.url"} };
renderer.render(
<UserAvatar user={user} style="rounded" />
);
let result = renderer.getRenderOutput();
let spy = sinon.spy(result, "_getAvatarStyles");
result.forceUpdate(); //If '_getAvatarStyles()' is called on render, this allows it to be called again
let expected = {
borderRadius: "10%"
};
expect(spy.returned(expected)).toBe(true);
done();
});
相关文章:
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- addthis:addthis实用程序框架的JS安全错误
- 如何将InfoBoxes与googlemaps实用程序库v3绑定到循环中的点击侦听器
- 确定公开JS实用程序函数的最佳模式
- 用于日期格式的 JavaScript 实用程序
- 如何让 Mocha 加载定义全局钩子或实用程序的帮助程序.js文件
- 试图通过一些实用程序减少 redux 样板
- 如何使用谷歌地图实用程序库在单击时显示弹出框文本
- 如何通过jQuery $.load()实用程序函数获取PHP将utf-8字符串传递给JavaScript
- 何时有时将对象类型定义为将实例绑定方法镜像为构造函数上的静态实用程序函数很有用
- Rally sdk 2实用程序用于创建指向详细信息页面/编辑弹出窗口的链接
- 使用Javascript实用程序意味着什么
- 挖空.js和分块实用程序
- 函数的实用程序类
- 框架中的实用程序,用于更轻松地定义 SVG 路径字符串
- 如何在引导程序中使用间距实用程序类
- 是否有JQuery或Javascript警告消息实用程序,可以在不干扰用户的情况下显示和超时
- 如何在实用程序文件中获取已启动的快速应用程序的服务器主机和端口
- 在 JavaScript 中封装尾部调用优化的实用程序
- React应用程序中className Test实用程序的替代方案