Przede wszystkim jestem nowy w testach Driven Development (TDD) i Behavior Driven Development (BDD) i ciężko jest mi uwierzyć, że jest to dobry sposób na tworzenie stron internetowych, ponieważ strony często muszą być rozwijane w szybki sposób, co jest trudne, jeśli musisz opracować kod testowy, zanim będziesz mógł coś zrobić.Jak działa Jasmine, jeśli funkcja nie zwraca wartości?
W każdy sposób!
Powód, dla którego piszę ten wątek, nie wynika z tego, co mi się wydaje, problemu (ale jeśli masz dane, to z przyjemnością też to przeczytam!). Czytałem trochę o składni, jak to działa i to wszystko. Odkryłem jednak, że podejście to jest trudne do zrealizowania, jeśli moja funkcja nie zwraca wartości.
Załóżmy na przykład, że mam jedno kliknięcie zdarzenia funkcję jedynie zmienia wartość tekstową wejścia wyzwalane:
$('input[type="text"]').click(function() {
$(this).val('Oh, that tickles!');
});
Jak jaśmin obsłużyć to? Podobnie jak w przypadku następującego kodu:
describe('Input type text is clicked', function() {
it('changes text in the input field', function() {
expect($('input[type="text"]').val()).toEqual("Oh, that tickles!");
});
});
Jest to błąd, ponieważ obiekt jQuery może zawierać wiele zmiennych wejściowych, które nie zawierają tej wartości. Czy są jakieś sposoby na znalezienie elementu (np. $(this)
lub podobnego), czy też powinienem włożyć test jaszczurki? Tak:
describe('Input type text is clicked', function() {
it('changes text in the input field', function() {
$('input[type="text"]').click(function() {
expect($(this).val()).toEqual("Oh, that tickles!");
}
});
});
Niektóre klarowność byłoby miło :)
Bardzo dziękuję z góry!
/J.
Ja też się z tym zmagam. Ale po prostu umieszczam wszystko w funkcji, która wykonuje "logikę" i podaje wartość zwracaną, a następnie wywołuje zdarzenie jquery z resztą. Testuję tylko funkcję. –
Ofc, to również rozwiązanie. Wszystkie jednak będą chwile, kiedy naprawdę chcesz przetestować swój kod wewnątrz zdarzenia (które zazwyczaj nie zwracają wartości). Odpowiedź Xn.s była bardzo pomocna, sprawdź to. :) –