Posso avere più di una descrizione per specifica di prova?

2

Ho iniziato a scrivere test qualche tempo fa e ho affrontato una domanda non matura: posso avere più di un describe per file di test unitario?

Se sì, in quali circostanze ciò accadrà?

Perché finora, sto descrivendo un / un modulo / oggetto come questo:

test / user-spec.js

describe ('A user', function () {
  it ('should add a "to do" into the list', function () {
    var user = new User;
    var list = new List({ name: 'Home' });

    user.add('Buying some groceries.').to(list);

    expect(list.items[0]).to.be('Buying some groceries.');
  });
});

In altre parole, ogni file dei miei test descrive un oggetto: non c'è spazio per un altro describe .

So che ci sono alcune buone / cattive pratiche sui test, e tecnicamente posso aggiungere più di una descrizione per specifica - non so se questa è la " migliore " strada da percorrere o anche bene.

Puoi descrivermi alcuni scenari in cui più di un describe potrebbe essere incluso nello stesso file spec? O anche se il mio describe è o non è sbagliato?

    
posta Guilherme Oderdenge 01.04.2015 - 22:06
fonte

1 risposta

2

Immagino che tu stia utilizzando il framework di test Jasmine poiché è l'unico che conosco con describe () e it ().

Sì, è assolutamente soddisfacente. L'unica cosa che descrive () è designare un pezzo di testo come "intestazione" che descrive un gruppo di test. La pagina di introduzione Jasmine dice anche

The describe function is for grouping related specs

e Jasmine supporta anche nested describe ().

Quindi la vera domanda qui è qual è il modo più intuitivo e leggibile per raggruppare i tuoi test . Se si tratta di una piccola classe con non molto da testare, una testata probabilmente sta bene.

Class A
    Foo
    Bar
    Foo with non-ASCII characters
    Bar with MAX_INT

Se è così, usare più di una descrizione () è probabilmente eccessivo.

Dopo alcuni anni di funzionalità creep, questo potrebbe richiedere un po 'di più.

Class A

    Basic Calls
        Foo
        Bar
        Baz
        Shazam

    Edge Cases/Regression Tests
        Foo with non-ASCII characters
        Bar with MAX_INT
        Shazam after Foo(Bar(42*-6))
        Baz before m_count is initialized

    Compatibility Shims/Polyfills
        Foo without generators
        Bar without getPrototypeOf()

Tutto ciò rende l'output più leggibile per il tuo team.

    
risposta data 03.04.2015 - 12:20
fonte

Leggi altre domande sui tag