gpt4 book ai didi

javascript - 如何在 Jest 测试中防止 "polluting"变量?

转载 作者:行者123 更新时间:2023-11-29 23:24:01 25 4
gpt4 key购买 nike

我的测试是这样的:

const aframeViewer = new VRMaker.AframeViewer()
let el
let panoramas
let panorama

beforeEach(() => {
panorama = { objectId: '1' }
panoramas = [panorama]
el = 'vrmaker-aframe'
})

describe('commonViewer', () => {

it('addPanoramas', () => {
const oldPanoramas = clone(panoramas)
aframeViewer.addPanoramas([{ objectId: '2' }])
expect(aframeViewer.getPanoramas()).not.toBe(oldPanoramas)
})

it('getPanoramas', () => {
expect(aframeViewer.getPanoramas()).toBe(panoramas)
})

it('getCurrentPanorama', () => {
expect(aframeViewer.getCurrentPanorama()).toBe(panorama)
})
})

这里的问题是 aframeViewer.addPanoramas([{ objectId: '2' }]) 变成了这个:

[{ objectId: 1 }]

进入这个

[{ objectId: 1 }, { objectId: '2' }]

因此 getPanoramas 测试有一个被污染的变量。 (getCurrentPanorama 遇到同样的问题。)

避免此类情况的最佳方法是什么?

最佳答案

  1. 声明 let aframeViewer; 并在 beforeEach 添加:

    aframeViewer = new VRMaker.AframeViewer()

  2. 不要指望一个测试在另一个测试之前运行,确保在 beforeEach 或测试开始时执行您需要执行的任何操作。

关于javascript - 如何在 Jest 测试中防止 "polluting"变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49808936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com