Мой тест выглядит так:

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 страдает той же проблемой.)

Как лучше всего избежать подобных ситуаций?

2
alex 13 Апр 2018 в 06:37

1 ответ

Лучший ответ
  1. Объявите let aframeViewer; и в beforeEach добавьте:

    aframeViewer = new VRMaker.AframeViewer()

  2. Не рассчитывайте, что один тест будет запущен перед другим, обязательно сделайте все, что вам нужно, либо в beforeEach, либо в начале теста.

1
Nir Alfasi 13 Апр 2018 в 16:46