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