Como fazer o caso de teste de unidade de jasmim para angular 6 bootstrap 4 modal

Reshma

html

<ng-template #content let-modal>   
<h1>Modal content inside this ng-template #content </h1>  
</ng-template>

Botão para abrir o modelo

<button  (click)="open(content)" > Open modal </button>

No arquivo ts

import { NgbModal, ModalDismissReasons } from '@ng-bootstrap/ng-bootstrap';
constructor(  public modalService: NgbModal) { }

open(content) {  
          this.modalService.open(content, { ariaLabelledBy: 'modal-basic-title', size: 'lg' }).result.then((result) => {
            this.closeResult = `Closed with: ${result}`;
          }, (reason) => {
            this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
          });
           }

Como fazer um caso de teste de jasmim para esta função aberta .

Ian A

Foi assim que testei no passado ...

Supondo que o arquivo TS do componente tenha a seguinte aparência:

export class MyComponent {

  closeResult: string;

  constructor(private _modalService: NgbModal) {}

  public openModal(content): void {
    this._modalService.open(content, { size: 'lg' }).result.then((result) => {
      this.closeResult = `Closed with: ${result}`;
    }, (reason) => {
       this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;
    });
  }

  private getDismissReason(reason: any): string {
    return  `with: ${reason}`;
  }
}

Você pode usar a seguinte classe de teste, que testará esses cenários:

  1. this._modalService.open é chamado com os parâmetros corretos
  2. Quando o modal é fechado, closeResulté atualizado corretamente
  3. Quando o modal está desativado, closeResulté atualizado corretamente

A classe de teste se parece com isto:

import { TestBed, async, ComponentFixture, tick, fakeAsync } from '@angular/core/testing';
import { NgbModal, NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { MyComponent } from './my.component';

// Mock class for NgbModalRef
export class MockNgbModalRef {
  result: Promise<any> = new Promise((resolve, reject) => resolve('x'));
}

describe('MyComponent', () => {

  let fixtureUnderTest: ComponentFixture<MyComponent>;
  let componentUnderTest: MyComponent;
  let modalService: NgbModal;
  let mockModalRef: MockNgbModalRef = new MockNgbModalRef();

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        MyComponent
      ],
      imports: [
        NgbModule.forRoot()
      ]
    }).compileComponents();

    fixtureUnderTest = TestBed.createComponent(MyComponent);
    componentUnderTest = fixtureUnderTest.componentInstance;
    modalService = TestBed.get(NgbModal);
  }));

  it('should open modal', () => {
    spyOn(modalService, 'open').and.returnValue(mockModalRef);
    componentUnderTest.openModal('<xxxx>');
    expect(modalService.open).toHaveBeenCalledWith('<xxxx>', { size: 'lg' });
  });

  // Needs to be async as modal result returned in a promise
  it('should update closeResult when modal closed', fakeAsync(() => {
    spyOn(modalService, 'open').and.returnValue(mockModalRef);

    componentUnderTest.openModal('<xxxx>');
    tick();
    expect(componentUnderTest.closeResult).toBe('Closed with: x');
  }));

  // Needs to be async as modal result returned in a promise
  it('should update closeResult when modal dismissed', fakeAsync(() => {
    spyOn(modalService, 'open').and.returnValue(mockModalRef);
    // Override the result returned from the modal so we can test what happens when the modal is dismissed
    mockModalRef.result = new Promise((resolve, reject) => reject('y'));

    componentUnderTest.openModal('<xxxx>');
    tick();
    expect(componentUnderTest.closeResult).toBe('Dismissed with: y');
  }));

});

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Caso de teste de unidade Angular 2 e karma-jasmim para abrir modal clicando no link

Como simular a propagação de parada de evento no angular 6 para o caso de teste de jasmim

Teste de unidade Angular 4 com jasmim / karma com simulação de post http - como corrigir

Como escrever um caso de teste de unidade usando jasmim e karma no angular 7

Como fazer o caso de teste do jasmim para exibir nenhuma propriedade css usando documet.getElementById e getElementsByClassName

Como faço um teste de unidade de jasmim para minha diretiva angular que precisa testar sua emissão?

Evento de alteração de teste de unidade angular e Jasmim para entrada [type = "arquivo"]

Método personalizado de simulação para jasmim de teste de unidade angular

serviço modal de bootstrap angular de teste de unidade

Necessário caso de teste de jasmim angular para chamada de função scrollIntoView

Necessário caso de teste de jasmim angular para chamada de função scrollIntoView

Teste de unidade angular e jasmim

como retornar promessa rejeitada / falha por meio do espião jasmim para um controlador angular em um teste de unidade

Como fazer o teste de unidade para exceções?

Como fazer o teste de unidade reduxsauce?

Como fazer o teste de unidade momentjs

Como fazer o teste de unidade MatBottomSheet

Como fazer o teste de unidade para getCurrentNavigation (). Extras.state no angular 7

Teste de unidade de classe base com jasmim e angular

Como encontrar o botão direito usando texto em angular 2 para caso de teste de unidade

Como escrever um caso de teste de unidade para o serviço do método HTTPClient get () em Angular?

Como escrever um teste de unidade para http-post dentro de um observável no jasmim?

Teste de Jasmim para ActivatedRoute Angular 7

Como simular datetime.datetime.now () para o caso de tempo limite de teste de unidade?

como interromper o teste de unidade de jasmim se algum dos testes falhar

Como unidade de teste de declaração 'chart.chart.update ()' em jasmim?

como interromper o teste de unidade de jasmim se algum dos testes falhar

Função do projetor seletor NGRX retornando indefinido no teste de unidade de jasmim, angular 10

Como escrever um caso de teste de unidade para um método [Angular]

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo