๏ผComposition API + Jest ใซใใใ Promise ใ่ฟใ action ใฎใในใ๏ผ
Vuex ใฎ actions
ใฏ Promise ใ่ฟใใใจใๅคใ
้ๅๆใฎใใ await
ใงใใฃใใๅพ
ใคๅฟ
่ฆใใใ
Jest ใงใฏ
โ
async/await
โ
resolves
/ rejects
ใไฝฟใฃใฆใในใใใใ
โ Composition API ใธใฎๆธใๆใๅพใใๅบๆฌใฎใในใๆน้ใฏๅคใใใชใใใ
โ this.$store.dispatch
โ useStore().dispatch
ใซใชใใ
// store/counter/actions.ts
export const actions = {
async incrementAsync({ commit }: any) {
await new Promise((resolve) => setTimeout(resolve, 500)); // 500ms ๅพ
ใค
commit('increment');
},
};
it('incrementAsync ใฏ increment ใ commit ใใ (ใฏใฉใน็)', async () => {
const commit = jest.fn();
await actions.incrementAsync({ commit });
expect(commit).toHaveBeenCalledWith('increment');
});
action ใฎๅไฝใในใใฏๅบๆฌ็ใซๅคใใใชใ๐
// tests/counter.actions.spec.ts
import { actions } from '@/store/counter/actions';
describe('counter actions (Composition API)', () => {
it('incrementAsync ใฏ increment ใ commit ใใ', async () => {
const commit = jest.fn(); // โ commit ใใขใใฏ
await actions.incrementAsync({ commit }); // โ Promise ใ็ตใใใพใงๅพ
ใค
expect(commit).toHaveBeenCalledWith('increment');
});
});