【问题标题】:I want to use jest to write vue-next ,but I meet some matters我想用 jest 写 vue-next ,但是遇到了一些问题
【发布时间】:2021-06-19 21:40:32
【问题描述】:

我不知道如何改变这个,我开始使用 jest,所以我需要帮助。我希望得到一些关于使用 jest 的提示或给我一些很好的例子

1、我的钩子

import {ref} from 'vue-demi'
const useLatest = <T>(num: T):{readonly current: T} => {
  const refLatest = ref(num)
  refLatest.current = num.value
  return refLatest
}
export {useLatest}

2、我的测试

import {useLatest}  from '../src'
import {ref} from 'vue-demi'

const count = ref<number>(0)

describe('test useLatest', () => {
  const current1 = useLatest(count)
  test('test current value', async () => { 
    expect(current1).toBe(0)
  })
})

3、我的错误

  ● test useLatest › encountered a declaration exception

    TypeError: Cannot add property current, object is not extensible

      2 | const useLatest = <T>(num: T):{readonly current: T} => {
      3 |   const refLatest = ref(num)
    > 4 |   refLatest.current = num.value
        |   ^
      5 |   return refLatest
      6 | }
      7 | export {useLatest}

【问题讨论】:

  • 专门针对 Jest 的提示是将 current1 = useLatest(count) 移动到测试或 beforeEach。您不想在测试之间重复使用相同的对象。

标签: typescript vue.js jestjs vuejs3


【解决方案1】:

与具有 current 属性的 React 引用相比,Vue 组合 API 引用具有 value 属性。

应该是:

const refLatest = ref(num)
refLatest.value = num.value

expect(isRef(current1)).toBe(true)
expect(current1.value).toBe(0)

并且可以通过使用正确的类型在编译时检测到错误:

const useLatest = <T>(num: T): Ref<T> => {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 2022-01-11
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2020-08-21
    • 1970-01-01
    相关资源
    最近更新 更多