账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Vue 单元测试 测试filters的问题
    43
    0

    最近在写组件的单元测试的时候,测试过滤器发现一个小问题。我看过vue的源码,我发现vue是在编译节点过程中如果遇到过滤器 会将其编译成 _f(){}的表达式。 然后会通过resolveAsset去获取 vm.$options的filters中相同的过滤器。

    /**
     * Runtime helper for resolving filters
     */
    export function resolveFilter (id: string): Function {
      return resolveAsset(this.$options, 'filters', id, true) || identity
    }

    我的测试脚本是这样的

    
    describe('测试filters是否能转换成大写', () => {
      const Cotr = Vue.extend(Hello)
      const vm = new Cotr().$mount()
    
      it('filter 测试', () => {
       vm.$nextTick(_ => {
          const upperText = vm.filters.upperCase('lisi')
          expect(upperText).to.equal('LISI')
        })
      })
    })
    

    虽然没有挂载到DOM上,但是为什么vm实例上也没有呢?但是如果改成setTimeout 就会有?希望大家帮忙解答一下 谢谢

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在Vue中,过滤器是用于对数据进行处理的函数。在单元测试中,我们通常需要测试过滤器的行为和结果。以下是一些可能的问题和解决方案:

      1. 筛选器在不同数据类型的过滤:如果过滤器需要处理的数据类型不同,那么在测试时需要确保数据满足过滤器的预期格式。

      解决方案:在测试之前,确保数据类型与过滤器的预期相符。如果无法做到这一点,可能需要使用其他方式(如JSON解析)来转换数据。

      1. 筛选器在错误的数据类型下返回错误的结果:在测试时,我们需要检查过滤器在错误的数据类型下返回的结果是否符合预期。

      解决方案:在测试之前,确保过滤器可以正确地处理错误的数据类型。如果无法做到这一点,可能需要使用其他方式(如错误处理)来处理错误的数据。

      1. 筛选器在测试时返回了预期之外的结果:在测试时,我们需要检查过滤器返回了预期之外的结果。

      解决方案:在测试之前,确保过滤器返回的预期结果与预期相符。如果无法做到这一点,可能需要使用其他方式(如错误处理)来处理预期之外的结果。

      1. 筛选器返回了过滤器没有处理的数据:在测试时,我们需要检查过滤器返回了过滤器没有处理的数据。

      解决方案:在测试之前,确保过滤器可以正确地处理没有被过滤的数据。如果无法做到这一点,可能需要使用其他方式(如错误处理)来处理没有被过滤的数据。

      1. 筛选器在不同设备和浏览器上返回不同的结果:在测试时,我们需要检查过滤器在不同设备和浏览器上返回的结果是否一致。

      解决方案:在测试之前,确保过滤器可以在不同设备和浏览器上正确地工作。如果无法做到这一点,可能需要使用其他方式(如跨浏览器测试)来处理不同设备和浏览器的问题。

      1. 筛选器在不同状态(如加载、开启等)下的行为:在测试时,我们需要检查过滤器在不同状态下的行为是否一致。

      解决方案:在测试之前,确保过滤器可以在不同状态(如加载、开启等)下正确地工作。如果无法做到这一点,可能需要使用其他方式(如状态管理)来处理不同状态的问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部