#vuejs2 #jestjs #vuex #vue-composition-api #composable
Вопрос:
Я использую vue2 с composition Api, vuex и клиентом apollo для запроса API graphql, и у меня возникают проблемы, когда я издеваюсь над составными функциями с помощью jest
// store-service.ts
export function apolloQueryService(): {
// do some graphql stuff
return { result, loading, error };
}
// store-module.ts
import { apolloQueryService } from 'store-service'
export StoreModule {
state: ()=> ({
result: {}
}),
actions: {
fetchData({commit}) {
const { result, loading, error } = apolloQueryService()
commit('setState', result);
}
},
mutations: {
setState(state, result): {
state.result = result
}
}
}
Испытание:
// store-module.spec.ts
import { StoreModule } from store-module.ts
const store = StoreModule
describe('store-module.ts', () => {
beforeEach(() => {
jest.mock('store-service', () => ({
apolloQueryService: jest.fn().mockReturnValue({
result: { value: 'foo' }, loading: false, error: {}
})
}))
})
test('action', async ()=> {
const commit = jest.fn();
await store.actions.fetchData({ commit });
expect(commit).toHaveBeenCalledWith('setData', { value: 'foo' });
})
}
Тест завершается неудачно, потому что фиксация вызывается с помощью (‘setData’, { значение: не определено}), которая является результатом исходной службы apolloQueryService. Моя шутка, похоже, не работает. Я делаю что-то не так? Ценю любую помощь, спасибо!