近日写单测的时候发现,咦,单测怎么不能watch呢?一致性该命令就报错!呀,我的组件怎么引入单测挂载就报错呢?出师不利……
问题1 报错too many open files
执行
yarn test x.test.js --watch
的时候,报如下图错误,看起来是什么文件太多,但是在windows是可正常运行的
这个问题是由于Mac OSX对于打开文件数的限制所导致的。
方法一:我们可以通过终端修改打开文件数限制
// 查看当前限制数
1. launchctl limit
// 修改maxfiles的限制
2. sudo launchctl limit maxfiles 1024 unlimited
方法二:修改jest配置,下面两个任选其一即可
// 方式一 添加`roots`配置
roots: ["test/unit"],
// 方式二 添加 `watchPathIgnorePatterns`
watchPathIgnorePatterns: ['node_modules'],
问题2 跑单测的时候直接报错挂掉了
为啥我跑单测的时候报错呢?单测里就引入挂载了一下组件。。。啥鬼……
组件没有定义name属性?这里样式写法有误?大爷的…… 我就清空组件内容写了一个简单的div,鬼畜的就好了。真的是组件有问题,自我怀疑……
// 单测code就这一点点,我的组件肯定是🆗的!自信!
describe('a component', () => {
test('a', () => {
const wrapper = mount(a)
console.log(wrapper);
})
})
后面排查到因为template的标签里有使用$route.name
,恍然大悟,我的单测没有引入路由! 菜鸟的我,吐血中。