2013-03-19 13 views
5

Zaczynam od testowania jednostkowego javascript (z Jasmine).Testowanie jednostki w stylu kodu javascript

Posiadam doświadczenie w testowaniu kodu C# jednostki. Ale biorąc pod uwagę, że JavaScript jest dynamiczny język, uważam, że jest bardzo przydatny do wykorzystania, że ​​testy i pisanie przy użyciu javascript siłę wyrazu, na przykład:

describe('known plugins should be exported', function(){ 
    var plugins = ['bundle','less','sass','coffee','jsn','minifyCSS','minifyJS','forward','fingerprint']; 

    plugins.forEach(function(plugin){ 
     it('should export plugin named ' + plugin, function(){ 
      expect(all[plugin]).toBeDefined(); 
     }); 
    }); 
}); 

W miarę wykonywania tego rodzaju niekonwencjonalnych test- pisanie, że nie poszły dalej niż robienie tego rodzaju testów (tablica z listą przypadków testowych, które są bardzo podobne)

Więc myślę, że moje pytanie jest

Czy to dobrze napisać testy takie jak ten, czy powinienem się ograniczyć do bardziej "statycznie wpisanego" urządzenia testowego?

Odpowiedz

3

Świetne pytanie!

Tak, idealnie jest napisać testy jednostkowe w ten sposób. Jest nawet zachęcany.

JavaScript będący dynamicznym językiem pozwala łatwo kpić z obiektów. DI i IoC są łatwe do wykonania. Ogólnie rzecz biorąc, testowanie z Jasmine (lub Mocha, które ja osobiście preferuję) jest przyjemnym i zabawnym doświadczeniem.

Warto nadmienić, że skoro jesteś w dynamicznym języku, musisz mieć testy, których nie używałeś w statycznych językach. Testy zwykle wymuszają członków i istniejące metody i typy.

Nie mając żadnych interfejsów do zdefiniowania umowy, często, , twoje testy definiują umowę twojego kodu, więc naprawdę nie jest rzadkością, aby testy przeprowadzały tego rodzaju weryfikację (jak w twoim kodzie), gdzie nie byłbyś w C#.

+1

Absolutnie, chciałem przede wszystkim mieć opinię na temat tego, czy czuć się niechlujnie w przypadku takich przypadków testowych – bevacqua