首页 > 解决方案 > 如何用 Jasmine 测试 SweetAlert2?

问题描述

我正在尝试测试以下功能,但我不确定是否需要做一些额外的事情来通过 de preConfirm() 验证,我在做单元测试时几乎是新手,如果有人可以给出一些方向,我会很感激它

edit(id: any, user: any, position: any): void {
      debugger;
      let formValues: any;

      const htmlContent = `
        <div style="font-size: 12px">
          <p>Nombre: <input type="text" id="name" value="${user.name}"/></p>
          <p>Email: <input type="text" id="email" value="${user.email}"/></p>
          <p>Telefono: <input type="text" id="phone" value="${user.phone}"/></p>
        </div>`;

      Swal.fire({
        title: 'Información Firmante',
        html: htmlContent ,
        confirmButtonColor: '#3085d6',
        confirmButtonText: 'Guardar',
        preConfirm: () => {
          const name = (document.getElementById('name') as HTMLInputElement).value;
          const email = (document.getElementById('email') as HTMLInputElement).value;
          const phone = (document.getElementById('phone') as HTMLInputElement).value;

          if (name === '') {
            Swal.showValidationMessage('El campo Nombre es requerido.');
            return;
          }

          if (email === '') {
            Swal.showValidationMessage('El campo Email es requerido.');
            return;
          }

          if (phone === '') {
            Swal.showValidationMessage('El campo Telefono es requerido.');
            return;
          }

          if (!this.validateName(name)) {
            Swal.showValidationMessage('El campo Nombre solo puede contener letras');
            return;
          }

          if (!this.validateEmail(email)) {
            Swal.showValidationMessage('El campo Email es incorrecto');
            return;
          }

          if (!this.validateTelephoneNumber(phone)) {
            Swal.showValidationMessage('El campo Telefono debe iniciar con +52 y 10 dígitos del número');
            return;
          }

          return [name, email, phone];
        }
      }).then((result) => {
        if (result.value !== undefined && result.value) {
            /*
            *
            *  THIS BLOCK OF CODE IS UNREACHABLE BY THE TEST
            */
            const name = (document.getElementById('name') as HTMLInputElement).value;
            const email = (document.getElementById('email') as HTMLInputElement).value;
            const phone = (document.getElementById('phone') as HTMLInputElement).value;
            user.name = name;
            user.email = email;
            user.phone = phone;
            this.callUpdateSigner(id, user, position)
        }
      }).catch(error => {
        this.alert.error(`¡Ocurrió algo al intentar editar el firmante!, error: ${error}`);
      })

    }

但是当我测试它时,测试没有到达以下语句中的代码:

if (result.value !== undefined && result.value)

这是我的测试

it('modal edit firmante - open modal', (done) => {
    const spyComponentUpdate = spyOn(component, 'callUpdateSigner')
    component.edit(1616723872429, {name:"Sebastian", email:"angel.gabriel@alphacredit.mx", phone:"+525545782417"}, 1)
    expect(Swal.isVisible()).toBeTruthy();
    setTimeout(() => {
      expect(spyComponentUpdate).toHaveBeenCalled()
      done()
    })
   
  });

标签: angularunit-testingjasminekarma-jasminesweetalert2

解决方案


推荐阅读