Mam kodu jQuery, że po kliknięciu na link, najpierw skór i następnie usuwa niektóre HTML, tak jak poniżej:Oczekiwanie na QUnit testuje
$(this).parent().parent().hide('slow', function() {
$(this).remove();
});
chcę zrobić test QUnit który zapewnia, że HTML o którym mowa, został usunięty:
$(thelink).click();
// Check that it is gone, by finding the first item in the list
entity = input.form.find('.recurrenceinput_occurrences .occurrence span.action a')[0];
// And make sure it's NOT the deleted one:
ok(entity.attributes.date.value !== "20110413T000000");
problemem jest to, oczywiście, że ok() badanie przeprowadzane jest przed ukryj animacji biec do końca, więc HTML offenting nie został jeszcze usunięty, a test nie powiedzie się .
Próbowałem różnych sposobów opóźnienia/zatrzymania testu przez sekundę, ale nic nie działa. Najbardziej oczywistym z nich jest użycie testu asynTest i wykonanie tej operacji. Nie powoduje to jednak zatrzymania testu. To wydaje się zatrzymywać coś przez dwie sekundy, ale nie jestem pewien co. :-)
Jakieś pomysły?
Bingo! To był właściwy porządek rzeczy. :-) Więc stop() faktycznie zatrzymuje test dopiero po zakończeniu? –
To podejście zostało wycofane (http://qunitjs.com/upgrade-guide-2.x/#replace-stop-and-start-with-assert-async). Odpowiedź @ ekcrisp wykorzystuje nowe podejście. – Joe
Co za niespodzianka, że coś, co zostało zadane 6 lat temu, jest przestarzałe. lol – epascarello