2012-09-24 22 views
25

Używam Chutzpah, aby wykonać moje testy jednostki JavaScript.Jak mogę debugować JavaScript, który jest wykonywany przez Chutzpah/PhantomJS

Referencje ścieżek do moich plików źródłowych i poniżej mają serię testów. Eksplorator tekstu w Visual Studio wyświetla moje testy i mogę je wykonać bezpośrednio z IDE, więc wszystko działa poprawnie.

Chciałbym jednak wkroczyć w kod źródłowy, który jest wykonywany po uruchomieniu moich testów.

Czy to możliwe?

Odpowiedz

36

Aktualizacja: Wersja 4.1.0 Chutzpah dodaje zintegrowany VS debugging.

enter image description here


To nie jest obecnie możliwe przy użyciu bezczelności. Najlepsze, co możesz zrobić, to zainstalować context menu extension, która doda opcję "Otwórz w przeglądarce", kliknij prawym przyciskiem myszy. Następnie możesz użyć wbudowanego w przeglądarce narzędzia do debugowania, aby przejść przez ten kod.

Chciałbym dodać zintegrowany sposób podłączenia do systemu debugowania VS, ale jeszcze nie wiem, jak to zrobić.

+2

ten pracował dla mnie, używając Chrome. Ustawiłem punkt przerwania, a następnie odświeżyłem przeglądarkę. Aby bezpośrednio debugować TS (zamiast wygenerowanego javascript), włącz funkcję "map źródłowych" w ustawieniach chrome dev tools (ikona koła zębatego w prawym dolnym rogu). –

+0

Czy ta sytuacja zmieniła się od tego czasu? Czy udało ci się zintegrować z debugowaniem Visual Studio? – julealgon

+1

Wtyczka menu kontekstowego nie ładuje się w przeglądarce, jeśli ścieżka projektu zawiera spacje, np. "... \ Visual Studio 2013 \ Project \ ..." –

0

Może tym momencie we właściwym kierunku:

Zrobiłem szybki i brudny screenshot grabber dla CasperJS użyciu captureBase64 („png”)

Jest księgowania obraz do serwera odbiorczego, który następnie wysyła go przez socket.io do przeglądarki, która wyświetla obraz jako obraz liniowy.

Kod źródłowy jest dostępny na github:

https://github.com/maciejjankowski/flaming-octo-puss

Nie jestem pewien, jak to jest kompatybilne z PhantomJS, ale CasperJS działa bez zarzutu, więc jeśli bezczelności korzysta PhantomJS istnieje szansa, można zrobić ta koncepcja działa.

Trzeba by dodać to do każdego etapu lub ustawić go jako onStepComplete obsługi:

this.evaluate(function(img){ 
    __utils__.sendAJAX("http://localhost:8001/", 'POST', {'img' : img }, false);  
    }, 
    {'img' : this.captureBase64('png')} 
);