Javascript 等待后未触发Sinon间谍-为什么?[Vue单元测试]
我是Vue和Vue单元测试的新手,请耐心听我说。:) 我需要测试两个VueX操作是否从特定组件创建的created()钩子中调度。第一次派遣会触发其Sinon间谍,但第二次不会。在第一次等待声明之后,任何间谍都不会活动 可能需要注意的是,代码本身的功能是正确的,并且执行预期的操作。只有单元测试失败了 以下是示例代码:Javascript 等待后未触发Sinon间谍-为什么?[Vue单元测试],javascript,vue.js,sinon,Javascript,Vue.js,Sinon,我是Vue和Vue单元测试的新手,请耐心听我说。:) 我需要测试两个VueX操作是否从特定组件创建的created()钩子中调度。第一次派遣会触发其Sinon间谍,但第二次不会。在第一次等待声明之后,任何间谍都不会活动 可能需要注意的是,代码本身的功能是正确的,并且执行预期的操作。只有单元测试失败了 以下是示例代码: async created() { await this.$store.dispatch(GET_A) await this.$store.dispatch(GET_B)
async created() {
await this.$store.dispatch(GET_A)
await this.$store.dispatch(GET_B)
// Do a bunch of other things after.
}
这是单元测试(使用Chai&Mocha):
如果在created()钩子中交换两个分派方法的顺序,测试将通过,因为GET_B是第一个。但是,GET_A的单元测试将失败
我在想,这可能是一种类似于存根操作不返回承诺的行为,导致测试在等待时暂停,直到超时
我曾多次尝试寻找其他人遇到的类似问题,这是我能找到的最接近的问题:
从我的理解来看,他的解决方案不能应用于这里
我将非常感谢任何关于我能做什么来解决这个问题的建议
谢谢
// 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)
})
})