Vue Test Utils 踩坑记录

602 阅读1分钟

近日写单测的时候发现,咦,单测怎么不能watch呢?一致性该命令就报错!呀,我的组件怎么引入单测挂载就报错呢?出师不利……

问题1 报错too many open files

执行yarn test x.test.js --watch的时候,报如下图错误,看起来是什么文件太多,但是在windows是可正常运行的 image.png

这个问题是由于Mac OSX对于打开文件数的限制所导致的。

方法一:我们可以通过终端修改打开文件数限制

// 查看当前限制数
1. launchctl limit
// 修改maxfiles的限制
2. sudo launchctl limit maxfiles 1024 unlimited

方法二:修改jest配置,下面两个任选其一即可

// 方式一 添加`roots`配置
roots: ["test/unit"],


// 方式二 添加 `watchPathIgnorePatterns`
watchPathIgnorePatterns: ['node_modules'],
问题2 跑单测的时候直接报错挂掉了

为啥我跑单测的时候报错呢?单测里就引入挂载了一下组件。。。啥鬼…… image.png 组件没有定义name属性?这里样式写法有误?大爷的…… 我就清空组件内容写了一个简单的div,鬼畜的就好了。真的是组件有问题,自我怀疑……

// 单测code就这一点点,我的组件肯定是🆗的!自信!
describe('a component', () => {
 test('a', () => {
  const wrapper = mount(a)
  console.log(wrapper);
 })
})

后面排查到因为template的标签里有使用$route.name,恍然大悟,我的单测没有引入路由! 菜鸟的我,吐血中。