Javascript 如何预防;“污染”;Jest测试中的变量?

Javascript 如何预防;“污染”;Jest测试中的变量?,javascript,jestjs,Javascript,Jestjs,我的测试如下所示: const aframeViewer = new VRMaker.AframeViewer() let el let panoramas let panorama beforeEach(() => { panorama = { objectId: '1' } panoramas = [panorama] el = 'vrmaker-aframe' }) describe('commonViewer', () => { it('addPanor

我的测试如下所示:

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
也有同样的问题。)

避免这种情况的最好方法是什么

  • 声明
    让aframeViewer和在每个之前的
    中添加:

    aframeViewer=新建VRMaker.aframeViewer()

  • 不要指望在另一个测试之前运行一个测试,确保在每次测试之前或测试开始时在
    中执行任何需要执行的操作


  • 谢谢你在Netflix工作?我可以要你的签名吗?@alex lol,我现在为一家小型初创公司工作,请为我祈祷!:)