Sobre testes

No Jasmine como faço para testar cada caso de teste? Tentei com o only, e o skip, mas não funcionou.

Boa pergunta, @gustavosouzajp … Confesso que não tinha parado para pensar nisso. rsrs

O prof. Danilo só demonstrou que devíamos criar os arquivos, mas não entrou especificamente nessa parte de como poderíamos personalizar quais testes seriam feitos em cada execução do jasmine.

Ainda não domino muito de JS, mas encontrei esse guia aqui e acredito que deve resolver sua dúvida:

2 Likes

Acho que entendi o contexto da sua pergunta, vamos lá…

  • Se quiser testar uma suite:describe inteira de forma isolada:
    npx jasmine #caminhodoarquivo ex: npx jasmine spec/mult.spec.js

  • Se quiser testar apenas um dos testes:it de uma suíte:describe:
    npx jasmine --filter="#textodescribe"
    ex: npx jasmine --filter="return the sum of two values"

1 Like

O npx é usado para executar algo, inclusive na documentação usamos para instalar o jasmine. Mas não mim referi a instalar nada. Quero saber como testar cada caso de teste. por exemplo no Jest, cypress, usamos logo após o it, um olny ou um skip. Tipo it.olny(‘Tipo do caso de teste’). Aí no lugar dele testar todos os casos de teste que tem naquele describe, ele testa apenas esse que tem o only. Entendeu agora?

Na documentação do Jasmine, tem como exemplo essa suite de testes:

describe("A spec", function() {
  beforeEach(function() {
    this.foo = 0;
  });

  it("can use the `this` to share state", function() {
    expect(this.foo).toEqual(0);
    this.bar = "test pollution?";
  });

  it("prevents test pollution by having an empty `this` created for the next spec", function() {
    expect(this.foo).toEqual(0);
    expect(this.bar).toBe(undefined);
  });
});

Se quisesse testar no Jest apenas o segundo caso de teste, e pular o primeiro, colocar iria: it.only("prevents test pollution by having an emptythis created for the next spec", function() { expect(this.foo).toEqual(0); expect(this.bar).toBe(undefined); });

É exatamente isso, com a flag --filter você passa apenas o teste que deseja executar.
o trecho npx jasmine --filter="return the sum of two values" só executa o teste, não instala nada.

Outra alternativa é utilizar o fit ou o xit.

// Ele irá ignorar o primeiro e executar somente o segundo.
describe("perform binary search", function () {
  it("must return the position of the element if it exists in a vector", () => {
    const values = [100, 200, 300, 400, 500];
    expect(binarySearch(300, values)).toBe(2);
  });

  fit("should return -1 if the element does not exist in an array", () => {
    const values = [100, 200, 300, 400, 500];
    expect(binarySearch(120, values)).toBe(-1);
  });
});
// Ele irá ignorar o segundo e executar somente o primeiro e o terceiro.
describe("perform binary search", function () {
  it("must return the position of the element if it exists in a vector", () => {
    const values = [100, 200, 300, 400, 500];
    expect(binarySearch(300, values)).toBe(2);
  });

  xit("should return -1 if the element does not exist in an array", () => {
    const values = [100, 200, 300, 400, 500];
    expect(binarySearch(120, values)).toBe(0);
  });

  it("check if the value is NAN", () => {
    const value = 1 + "b" * 10;
    expect(value).toBeNaN();
  });
});

Pronto era isso que queria saber, nesse caso usa a flag filter. Estava procurando na documentação e não achei.

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.