javascript - 等待后未触发诗乃间谍 - 为什么?【Vue单元测试】
问题描述
我是 Vue 和 Vue 单元测试的新手,所以请多多包涵。:)
我需要测试两个 VueX 操作是从创建特定组件的 created() 挂钩中分派的。第一个调度触发了它的诗乃间谍,但第二个不会。在第一个 await 语句之后没有间谍将起作用。
需要注意的是,代码本身可以正常运行并执行预期的操作,这一点可能很重要。只有单元测试失败。
这是示例代码:
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)
})
})
如果我在 created() 钩子中交换两个调度方法的顺序,测试将通过,因为 GET_B 是第一个。但是,GET_A 的单元测试将失败。
我在想这可能是类似于存根操作没有返回承诺,导致测试在等待时暂停,直到超时。
我已经多次尝试找到其他人遇到的类似问题,这是我能得到的最接近的问题:https ://github.com/sinonjs/sinon/issues/1735
据我了解,他在该链接上的解决方案不能在这里应用。
我会非常感谢任何关于我可以做些什么来解决这个问题的建议!
谢谢。
解决方案
推荐阅读
- logstash - Logstash Grok 模式用于切割拆分字符串并删除最后一部分
- django - Django - 找不到包含的 URL 模式的反向
- angular - Ngrx - 使用其他模块的效果
- java - Apache Beam:如何读取具有不同消息方案的多个 Kafka 主题
- python - PowerShell Python 命令行参数
- angularjs - 如何使用angularJS从html表单中获取数据并保存在数据库中(带按钮)?
- c# - 我应该手动维护 IHostedService 的生命周期吗?
- xml - 我可以使用异步 Aalto-XML 作为 JAXB 实现吗?
- javascript - js 异步使用数组 push() shift()
- excel - 更新用户表单标签 Worksheet_Calculate 和每次打开用户表单