我很擅长使用Jest创建单元测试。我正在尝试为使用第三方软件包的组件编写测试,该软件包可以获取applanga(翻译)密钥。
还有一点需要注意的是,该函数是一个HOC,我觉得这对于模拟来说有点棘手。我得到的一些错误是translate is not a function
或can't perform getState of undefined
任何指针都非常感谢!
编辑:在玩了一下之后,我意识到我需要的只是嘲笑一些功能。我现在遇到的一个问题是能够找到无状态组件。下面,您可以从控制台看到它打印出元素,但不是像我预期的那样BannerText
,而是打印Component
。
代码(为简洁起见,删除了一些代码)
import { withTranslate } from 'senf-translations';
export const BannerText = ({ index, children, translateRaw }) => (
<div>
<h4>
{translateRaw(`store.banner-item-1`)}
</h4>
</div>
);
const BannerItem = props => (
<div>
<div>
<BannerText {...props}/>
</div>
</div>
);
export default withTranslate(['store'])(BannerItem);
测试
import React from 'react';
import { shallow } from 'enzyme';
import BannerItem from '../src/modules/banners/BannerItem';
describe('<BannerItem />', () => {
const mock = jest.fn();
const props = {
translateRaw: mock,
};
let component;
it('render banner item', () => {
component = shallow(<PureBannerItem {...props} />);
console.log(component.debug());
expect(component.find('BannerText')).toHaveLength(1);
});
});
Console.debug()输出
<div className="fela-gzvaff">
<div className="fela-10318hh">
<Component translateRaw={[Function]} />
</div>
</div>