Шинонов шпионов не вызвали после ожидания - почему? [Vue Unit Test] - PullRequest
1 голос
/ 07 апреля 2019

Я новичок в тестировании модулей Vue и Vue в целом, поэтому, пожалуйста, потерпите меня. :)

Мне нужно проверить, что два действия VueX отправляются из ловушки созданного () конкретного создания компонента. Первая отправка запускает своего Шинона-шпиона, а вторая - нет. Никакие шпионы не будут работать после первого заявления об ожидании.

Вероятно, важно отметить, что сам код работает правильно и выполняет то, что ожидается. Это только модульный тест, который не проходит.

Вот пример кода:

async created() {
  await this.$store.dispatch(GET_A)
  await this.$store.dispatch(GET_B)

  // Do a bunch of other things after.
}

Это модульный тест (с использованием Chai & Mocha):

// Bunch of other things happen here, like setting up localVue, etc.

describe('TestPage.vue', () => {
  let actions
  let getters
  let store
  let router

  beforeEach(() => {
    actions = {
      GET_A: sinon.stub(),
      GET_B: sinon.stub(),
    }

    store = new Vuex.Store({
      actions,
      getters
    })

    router = new VueRouter()
  })

  it('created() should trigger the action GET_B.', () => {
    const wrapper = shallowMount(TestPage, {
      store,
      localVue,
      router,
      attachToDocument: true
    })

    expect(actions.GET_B.called).to.be.equal(true)
  })
})

Если я поменяю местами порядок двух методов отправки в ловушке созданного (), тест пройдет, потому что GET_B является первым. Однако тогда модульный тест для GET_A не пройден.

Я подумал, что это может быть что-то вроде заглушенных действий, которые не возвращают обещание, в результате чего тест приостанавливается в ожидании до истечения времени ожидания.

Я много раз пытался найти аналогичную проблему, с которой сталкивались другие, и это было самое близкое, что я мог получить: https://github.com/sinonjs/sinon/issues/1735

Тем не менее, насколько я понимаю, его решение по этой ссылке здесь не применимо.

Буду очень признателен за любые предложения относительно того, что я могу сделать, чтобы это исправить!

Спасибо.

...