1
resposta

[Dúvida] Usando a fixures

No exemplo usado em aula a fixture foi consumida no beforeeach e foi usado um alias para defini-la olhando exemplos na internet, antes de assistir essa aula, acabei encontrando outro modo de fazer isso

import {massas} from '../../fixtures/massas.json';

describe('Cadastrar e logar no site ', ()=>{
    beforeEach(()=>{  
.
.
.
 massas.forEach((massa, index) => {      
        //cadastra massa
        it(`Cadastrar - Teste ${index}`, () => {
            cy.cadastro(massa.email, massa.password);    
        });      

gostaria de saber se existe alguma diferença prática entre essas duas formas, ou se é apenas questão de facilitar a manutenção num segundo momento.

1 resposta

Olá Rafael! Tudo bem?

A diferença entre os dois métodos de utilizar fixtures no Cypress que você mencionou está principalmente na forma como os dados são carregados e acessados durante os testes.

  1. Usando cy.fixture() com alias no beforeEach:

    • Quando você usa cy.fixture('nomeDoArquivo').as('alias'), você está carregando a fixture antes de cada teste e criando um alias para ela. Isso permite que você acesse os dados da fixture dentro dos testes usando cy.get('@alias'). Essa abordagem é útil quando você deseja garantir que a fixture seja carregada antes de cada teste, o que pode ser importante se os dados da fixture forem usados em múltiplos testes dentro do mesmo arquivo.
    beforeEach(() => {
        cy.fixture('massas.json').as('massas');
    });
    
    it('Exemplo de uso', () => {
        cy.get('@massas').then((massas) => {
            // Use os dados da fixture aqui
        });
    });
    
  2. Importando a fixture diretamente:

    • Quando você importa a fixture diretamente no início do arquivo, como import { massas } from '../../fixtures/massas.json';, você está carregando os dados uma única vez, no momento em que o arquivo de teste é carregado. Isso pode ser mais eficiente em termos de desempenho, pois evita a necessidade de carregar a fixture repetidamente antes de cada teste. No entanto, isso significa que os dados são compartilhados entre todos os testes no arquivo, o que pode não ser desejável se os testes modificarem esses dados.
    import { massas } from '../../fixtures/massas.json';
    
    it('Exemplo de uso', () => {
        massas.forEach((massa) => {
            // Use os dados da fixture aqui
        });
    });
    

Resumidamente, a escolha entre essas abordagens pode depender do contexto e das necessidades específicas dos seus testes. Usar cy.fixture() com alias pode ser mais flexível e seguro em termos de isolamento de testes, enquanto importar diretamente pode ser mais simples e eficiente se você não precisar desse isolamento.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.