Entonces tengo un método vue que necesito probar
en CheckoutButton.vue
createMidtransToken () { const card = this.$store.state.payment.creditCardPayload const options = { onSuccess: (response) => { // HANDLING SUCCESS const payload = { ...this.paymentTypeChoosen, token: response.token_id } this.payCheckout(payload) }, onFailure: (response) => { // HANDLING ERROR const errorMessage = response.status_message this.$alertModal.show({ show: true, type: 'error', title: 'Transaksi Dibatalkan', text: errorMessage, showButton: true, buttonText: 'Kembali', buttonEventExist: true, buttonEvent: () => { this.handleRouteError() } }) } } window.MidtransNew3ds.getCardToken(card, options) }en CheckoutButton.spec.js
it('Should test createMidtransToken', () => { Object.defineProperty(window, 'MidtransNew3ds', { getCardToken: jest.fn() }) wrapper.vm.createMidtransToken() expect(window.MidtransNew3ds.getCardToken).toHaveBeenCalled() }) })y me sale un error
● Probar el componente CheckoutButton con el resumen de la etapa › Debería probar createMidtransToken
TypeError: Cannot read property 'getCardToken' of undefined 362 | } 363 | } > 364 | window.MidtransNew3ds.getCardToken(card, options) | ^ 365 | },¿Cómo pruebo el método createMidtransToken para que la prueba del archivo pueda ejecutarse correctamente?
Los argumentos defineProperty son incorrectos. Debe haber una función de get o un value de valor en el objeto de configuración para definir una propiedad.
Object.defineProperty(window, 'MidtransNew3ds', { value: { getCardToken: jest.fn() } }) No hay razón para usarlo aquí porque defineProperty es útil solo para propósitos específicos. Se puede definir por prueba o en beforeEach para todas las pruebas:
window.MidtransNew3ds = { getCardToken: jest.fn() }; Y siempre debe limpiarse en afterEach para no afectar otras pruebas:
delete window.MidtransNew3ds