Я новичок в тестировании модулей 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
Тем не менее, насколько я понимаю, его решение по этой ссылке здесь не применимо.
Буду очень признателен за любые предложения относительно того, что я могу сделать, чтобы это исправить!
Спасибо.