测试:使用Jest / Enzyme查找样式化的情感成分

时间:2019-01-11 21:02:32

标签: javascript reactjs jestjs enzyme emotion

我从一个迷人的项目迁移到一个情感项目。唯一缺少的拼图?测试。

在迷人的环境中,我可以找到带有以下选择器的元素:

$component.find('StyledComponent');

$component.find('StyledComponent[prop="value"]');

这不再起作用。到目前为止,我发现的最好方法是:

import StyledComponent from 'my/ui/StyledComponent';

$component.find(StyledComponent);

$component.find(StyledComponent).filter('[prop="value"]');

我喜欢前一种方法,因为根本不需要导入组件。某些情感成分在文件中定义,但不导出。在那种情况下,它会变得更加冗长:

$component.find('div[className*="StyledComponent"]');

$component.find('div[className*="StyledComponent"][prop="value"]'); // or
$component.find('div[className*="StyledComponent"]').filter('[prop="value"]')

有更好的方法吗?感谢您的阅读!

1 个答案:

答案 0 :(得分:1)

在定义样式组件的var catKey = [2, 6]; var posts = [{ id: 1, cat: [1, 2, 3], title: "Hello World" }, { id: 2, cat: [5, 6, 7], title: "Hello JavaScript" }, { id: 3, cat: [8, 9], title: "Hello Arrays!" } ]; var filteredPosts = posts.filter(function(post) { return post.cat.filter(function(c) { return catKey.indexOf(c) !== -1; }).length; }); console.log(filteredPosts);时,仍然可以使用第一种方法。

displayName

这将使您能够在测试过程中以以下字母开头:

const StyledComponent = styled('div')` // ... `;
StyledComponent.displayName = 'StyledComponent';

我希望这会有所帮助。