Cordova / PhoneGap TDD: как использовать Jasmine и Karma для тестирования мобильного приложения?

To be able to develop in TDD
As a PhoneGap developer using Jasmine and Karma
I want to be able to run Jasmine spec files inside a PhoneGap application
So I can verify my Cordova specific code in my unit tests

Основываясь на карме #472, это не работает для некоторых/большинства людей, но некоторые утверждают, что может быть сделано.

Чего я пытаюсь добиться, так это иметь доступ к среде Cordova (например, FileSystem API, событиям батареи и т. д.) в моих файлах/тестах спецификаций. (Кстати, я издеваюсь над многими сервисами, но я хотел бы получить доступ к реальному API)

Я попытался перенаправить приложение Cordova на страницу запуска Karma с помощью window.location = 'http://karma:8080', и хотя я могу загрузить базовый файл cordova.js внутри тестов, deviceready никогда не срабатывает (см. Билет), плюс я не могу получить код JS, необходимый для иметь функциональность плагина (т.е. код, зависящий от плагинов, не может быть протестирован).

Я пытался создать <iframe>, указывающий на Karma, внутри приложения Cordova, но также не смог получить доступ к cordova.

Я обнаружил, что другие внедряют кордову в window.parent, но я этого не делаю. Я действительно не понимаю, как это может работать (я не могу получить доступ к window.parent из моего <iframe>).

Я пытался сделать это в ripple-emulator и в Android AVD, но безуспешно.

Любые указатели действительно ценятся. Я использую Cordova 3.4.1 на Android (не для iOS) и последние версии Karma & Jasmine, а также AngularJS 1.3.


person the_karel    schedule 12.05.2014    source источник
comment
Что-нибудь случилось здесь для вас?   -  person Nikel Weis    schedule 17.11.2014
comment
Нет, я так и не продвинулся дальше.   -  person the_karel    schedule 17.11.2014
comment
В последнее время я ничего не делал с Кордовой, так что нет.   -  person the_karel    schedule 21.08.2015


Ответы (1)


Вы можете создать два отдельных файла index_real.html и index_test.html в папке www. index_real.html — это index.html, который у вас есть в данный момент. index_test.html будет оснащен версией Jasmine index_real.html.

Создать real.sh:

cp index_real.html index.html cordova run

и test.sh:

cp index_test.html index.html cordova run

Запуск real.sh запустит неинструментированную версию приложения, а test.sh запустит набор тестов. Если вы настроите index_test.html близко к index_real.html, у вас будут тесты автоматизации пользовательского интерфейса, или если вы поставите стандартный Jasmine test runner, у вас будет набор модульного тестирования.

person codevision    schedule 09.12.2014