我从一个迷人的项目迁移到一个情感项目。唯一缺少的拼图?测试。
在迷人的环境中,我可以找到带有以下选择器的元素:
$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"]')
有更好的方法吗?感谢您的阅读!
答案 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';
我希望这会有所帮助。