Модульное тестирование логики приложения Nativescript в браузере - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь настроить модульное тестирование для приложения Nativescript, выполняемого ng test в браузере.Проблема состоит в том, что всякий раз, когда происходит импорт tns-core-modules или другого плагина, модуль не может быть разрешен из-за специфических файлов платформы (например, «tns-core-modules / application / application.android.js»), которые никогда не компилируются впакет, в результате чего выдается ошибка типа «Модуль не найден: Ошибка: не удается разрешить« tns-core-modules / application »».

Я знаю, что в Nativescript есть поддержка встроенных модульных тестов.Проблема в том, что он не может работать на CI.Мне бы очень хотелось иметь легкие тесты для моей бизнес-логики, высмеивая все зависимости от платформы.Я безуспешно искал способ смоделировать импорт модуля во время выполнения.Я посмотрел на пакет rewire, но он работает только на узле.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Мне наконец удалось заставить это работать. Не очень элегантное решение, и мне еще предстоит выяснить, сколько ему требуется обслуживания. Ключевые моменты здесь:

  1. Используйте paths секцию tsconfig.json, чтобы добавить фиктивный импорт Места
  2. В каталоге mocks создайте файлы для любого неразрешенного модуля
  3. Некоторые модули nativescript ссылаются на вспомогательные функции в глобальном сфера, но они не определены. Моим решением было определить их в test.ts как это
window['__decorate'] = () => {};
window['__extends'] = () => {};
window['__metadata'] = () => {};
window['__param'] = () => {};
window['layout_base_1'] = { CSSType: () => {} };
window['Crashlytics'] = {};
window['Fabric'] = {};
0 голосов
/ 02 апреля 2019

Вы просто не можете запустить приложение NativeScript в браузере.

В случае, если вы ищете что-то вроде безголового режима, Appium также имеет один, isHeadless возможностей.

Между прочим, могу я узнать, почему вы думаете, что выне удается запустить модульные тесты {N} на CI?Он должен работать и на CI, ведь это машина, которая выполняет те же команды на основе некоторого триггера.

...