2012-06-13 20 views
10

Czekam na konwersję z testów Jasmine na testy Mocha ze względu na jego zdolność do wykonania Przed (wszystkie), możliwości raportowania i wsparcie dla coffeescript.Urządzenia kompatybilne z Mocha obsługują

Jedną z rzeczy, których nie mogłem znaleźć, jest to, czy Mocha (lub w połączeniu z kompatybilną biblioteką asercji) obsługuje takie urządzenia, jak jaśmin-jquery (https://github.com/velesin/jasmine-jquery). Czy taka funkcjonalność istnieje dla Mocha?

Próbuję przetestować kod w przeglądarce (tak, że uruchomię go za pomocą testera html), który manipuluje DOM. Nie chcę używać zombiejs, ponieważ wolałbym go uruchomić w środowisku, w którym testuję.

Edytuj: Dla odszukania, szukając rozwiązania, natknąłem się na grunt + mocha z implementacja phantomjs. To też nie działa w moim przypadku, ponieważ chciałbym użyć niestandardowej wersji webkita.

Odpowiedz

10

Z tego, co udało mi się wymyślić, odpowiedź brzmi: nie. Jest to prawdopodobnie spowodowane faktem, że Mocha miał po raz pierwszy obsługiwać node.js. W węźle pojęcie urządzeń w jaśminowym jquery nie istnieje, ponieważ DOM/przeglądarka nie istnieje.

Patrząc na obsługę urządzeń dla wtyczki jaśminowo-jquery, zdaję sobie teraz sprawę, że nie jest trudno zbudować tę funkcję samodzielnie. Podstawowym mechanizmem jest użycie jQuery do dodania zewnętrznego szablonu do DOM, przy jednoczesnym zachowaniu odniesień do niego, aby możliwe było czyszczenie i buforowanie.

będę aktualizować tę odpowiedź, jeśli zdecyduję się wydać coś na github

Edycja: tutaj jest - https://github.com/badunk/js-fixtures. Kod i specyfikacje zostały zasadniczo skopiowane z jaśminowego jquery z usuniętymi zależnościami.

+0

Czy js-fixtures replikuje również ładowanie JSON, takie jak 'getJSONFixture()' w jaśminowym jquery? –

+0

nie, to nie jest obecnie obsługiwane - sprawdzę to jako ulepszenie. Powitanie PR: https://github.com/badunk/js-fixtures/issues/12 – badunk

+0

Czy tak się dzieje? W Mocha dostępne są funkcje ustawień i przestojów, które wspierają uruchamianie testów w przeglądarce. – Indolering

0

Czy próbowałeś już zombie.js? Instaluje się z NPM i wydaje się raczej agnostykiem testować framework.

To dało mi w pełni funkcjonalny obiekt okna, który mogłem ozdobić jQuery.

Browser = require 'zombie' 

browser = new Browser() 
global.window = browser.window 
require '../src/js/vendor/jquery-1.7.1.min.js' 

UPDATE:

Mam revisited ten problem i wygląda jQuery + jsdom (przez KMP) wydaje się być bardziej popularne i lekkie rozwiązanie. Przykład: http://www.netboy.pl/2012/10/testing-jquery-code-with-mocha-chai-and-jsdom/

+0

Link już nie działa. – CodingWithSpike

+0

JSDOM i Zombie są nieco problematyczne. Na przykład: brak obsługi 'classList',' dataset' i innych rzeczy, których chciałem użyć. Wygląda na to, że wracam do tego z phantomjs. –

Powiązane problemy