2013-02-21 14 views
9

Niedawno zacząłem używać QUnit do testowania mojego kodu JavaScript i jestem nieco zdezorientowany przez funkcję w dokumentacji: expect().Dlaczego kiedykolwiek używać oczekiwać() podczas pisania testów z QUnit?

Zgodnie z docs, expect() przeznaczony jest do:

[s] pecify ile twierdzenia Oczekuje się, że do uruchomienia w ramach testu.

A oto przykład dają:

test("a test", function() { 
    expect(2); 

    function calc(x, operation) { 
    return operation(x); 
    } 

    var result = calc(2, function(x) { 
    ok(true, "calc() calls operation function"); 
    return x * x; 
    }); 

    equal(result, 4, "2 square equals 4"); 
}); 

Jedyne co widzę tutaj to koszmar utrzymanie. Za każdym razem, gdy dodajesz asercję do testu, musisz zaktualizować ten numer lub test się nie powiedzie. Czy istnieje praktyczna aplikacja dla tego rodzaju funkcji?

+1

Pełna domena od kogoś, kto zna robaka o QUnit: Może być używany jako ochrona przed nieskończonymi pętlami. Wydaje się narzucać maksymalny limit, a nie minimum, więc możesz użyć 'expect (100)' (lub podobnego) i powinno być w porządku. –

+1

To jest złe, nie jest ani minimalne ani maksymalne, określa dokładną ilość asercji, których się spodziewasz. Jeśli liczba jest niższa lub wyższa od wykluczenia, test zakończy się niepowodzeniem. – Odi

Odpowiedz

10

Jedyne, co widzę tutaj to koszmar utrzymania ... Czy istnieje praktyczna aplikacja dla tego rodzaju funkcji?

Cóż, sposób, w jaki uważam, że expect ma być używany, ma pogrupowane znaczące zadania. Jest to przydatne dla imprez testowych lub wywołania zwrotne, na przykład:

test('trigger an event', function() { 
    expect(1); 

    $('div') 
    .on('click', function() { ok(1) }); 
    .trigger('click'); 
}); 

to nie staje się koszmarem, jeśli trzymać sensownych zadań pogrupowanych w małych prób, gdzie spodziewane są tylko 2 lub 3 twierdzenia.

+3

Aby nieco opracować, podczas testowania kodu asynchronicznego istnieje szansa, że ​​zdarzenie asynchroniczne nie nastąpi i test nie zostanie uruchomiony. W takim przypadku potrzebujesz niepowodzenia, a nie testu po cichu pomijanego. – adamesque

3

Może być używany jako zabezpieczenie, aby upewnić się, że nie napisałeś testu, który nie może być uruchomiony. Jeśli masz zwyczaj pisania spodziewanej liczby testów, czy kiedykolwiek w jakiś sposób napiszesz pakiet testowy, w którym jeden test jest ukryty przed QUnit z jakiegoś powodu, QUnit odbierze to przed tobą.

Powiązane problemy