我的测试看起来像这样:
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
遇到相同的问题。)避免这种情况的最佳方法是什么?
最佳答案
声明let aframeViewer;
并在beforeEach
中添加:aframeViewer = new VRMaker.AframeViewer()
不要指望在另一个测试之前运行一个测试,请确保在beforeEach
或测试开始时做您需要做的任何事情。