Aleksei
это где такой стэк трейс приходит?
Artem
это где такой стэк трейс приходит?
От ReactNativeJs. Бросается из js: throw new Error('my mess');
Aleksei
да понятно что из js, стек трейс то откуда (на всякий случай напомню что он не из воздуха берется) это точно не стэк трейс js рантайма
Aleksei
точнее конечно рантайма, но не самого js кода, а стэк трейс движка как будто
Artem
Я тебе код написал как я это сделал
Artem
У меня вызывается из андройда код
Artem
Метод
Artem
Который кидает Promise.reject
Artem
Я смотрю что это reject и кидаю ошибку throws new Error
Roman
Вроде как в рн когда кидаешь new Error - это значит что реальная ошибка и приложуха вся падает
Roman
Так что попробуй обойтись ворнингами
Aleksei
В общем как я понял ты это в нативке пытаешься достать стэк трейс исключения из js-а. По идее это и надо делать в js, а не в нативке, у объекта Error есть свойство stacktrace. Раз ты кидаешь его сам и потом нигде не ловишь, то JSC конечно же кинет исключение в нативке, как уже там достать стэк трейс я не знаю, надо смотреть доки к нему. Но то что он тебе показывает такой стек трейс это вполне логично
Artem
Ладно
Artem
Вопрос ещё есть : как вы тестируете протокол между js и нативным кодом . Т.е. например в андройде у меня есть @ReactMetgod myMethod(). Как сделать тест который проверит что этот метод реализован в iOs или что этот метод реализован и в андройде в ios.?
Artem
Можно ли это протестировать без интеграционных тестов ?
Artem
Кто нибудь использует robolectric ?
Alexander
Можно ли это протестировать без интеграционных тестов ?
можно проверить наличие, но выполнять только на девайсах/эмуляторах или внутренние тесты под каждую платформу (при сборке)
Artem
можно проверить наличие, но выполнять только на девайсах/эмуляторах или внутренние тесты под каждую платформу (при сборке)
Спасибо. Можно подробнее о том как проверить наличие и как писать внутренние тесты ( не понял что ты имеешь в виду)?
Alexander
https://developer.android.com/training/testing/unit-testing/index.html
Alexander
https://m.habrahabr.ru/post/258953/
Artem
Ну юнит тесты то я напишу :)
Alexander
ну а в целом смысла нет проверять наличие))) так как это очень глупо
Artem
Там есть какая-то специфика ?
Artem
Реактовская
Artem
Стоп
Alexander
можно разделять компоненты реактовские под каждую платформу: index.android.js index.ios.js и соотв реализовывать использование модулей
Artem
Мне нужно проверить что все методы которые дергает js из java - реализованы
Aleksei
и как узнать список всех методов которые дергаются
Aleksei
а вообще мне тоже непонятно зачем
Artem
зачем?)))
У нас команда работает над приложением , отдельно js отдельно ios и андройд . js и ios могут добавить метод которого у меня нет . Я обновлю код и не узнаю об этом . а когда js вызовет этот метод то android приложение упадёт
Artem
и как узнать список всех методов которые дергаются
Это можно со стороны js написать интеграционный тест
Artem
На эмуляторе
Artem
Но я искал более быстрое и простое решение
Aleksei
Это можно со стороны js написать интеграционный тест
так тыж сам сказал что без интеграционных
Artem
Alexander
У нас команда работает над приложением , отдельно js отдельно ios и андройд . js и ios могут добавить метод которого у меня нет . Я обновлю код и не узнаю об этом . а когда js вызовет этот метод то android приложение упадёт
в таких ситуациях пилится общая спецификация модуля и заглушки на методы... если ios / android разработчик не читает спецификации... это прескорбно
Aleksei
Вот по этому я и спрашиваю :)
вот как я вижу это - просто пишутся два набора тестов. один для нативки, что реализованы все методы. другой для js-а, что методы дергаются и все. как это все организовать, это уже другой вопрос
Aleksei
но зачем... просто общаться надо в команде)))
ну видишь человеку очень хочется))
Artem
Да :)
Alexander
Есть вариант на go парсер написать с поиском методов анализом использования... но это далеко не быстро))) проще конфу собрать
Alexander
Почему на го ?потому что наравится ? :)
просто как вариант, для утил вполне подходит... а так можно хоть на чем... но человекочасы везде разные
Alexander
Почему на го ?потому что наравится ? :)
есть вот такой вариант, каждый нативщик пишет unit тест в процессе которого к примеру дергается api по регистрации методов, далее на js в тестах, по api проверят наличие этих методов для текущей версии... из минусов нужно поднимать сервак с api
Alexander
вместо сервака можно в файл сливать инфу
Alexander
и тд.. но не уверен что удобно будет
Artem
Ммм
Alexander
и точно не точно)
Artem
Интерстно
Artem
Спасибо за идею
Artem
Я в этом направлении не думал
A
господа, сложный вопрос: сцена грузится по webview, загружется сторонняя страница с сайта. в ней есть инпут, кликаешь по нему - открывается кейбоард, который перекрывает этот инпут и ещё часть страницы на андроиде. как быть??
A
кстати, кейбоард закрыть тоже нельзя
A
вот сам удивлён
A
но вроде работает
A
так то я по e.endCoordinates.height вытягивал через листенеры.. но кнопки Done всё равно нету в клавиатуре
A
как вообще добавляете эту кнопку в клавиатуру?
Denis
ребят вопрос немного не в реакт, но использую именно с ним: создаю new Set([ строки ]) после удаления из сета значения, на его месте появляется undefined все бы ничего, но после множественных add / delete их там прям очень много
Denis
короче он создает в сете значение, а после удаления ставит на его место undefined
Denis
все работает штатно, есть ли смылс париться?
Denis
юзать старый добрый Array и не заморачиваться или все таки поискать ответы, в нете нет ничего путного
Denis
поэтому и в нете ничего нет))
Denis
console.log
Aleksei
вот только что в хроме попробовал и все норм
Denis
ну мы ж тут про р-н
Denis
Set { [exp] "_map": Map { [exp] "_mapData": Array [ [exp] undefined, [exp] undefined, [exp] undefined, [exp] undefined, [exp] undefined, [exp] undefined, [exp] undefined, [exp] undefined, [exp] undefined, [exp] Array [ [exp] "Вторник", [exp] "Вторник", [exp] ], [exp] ], [exp] "_objectIndex": Object {}, [exp] "_otherIndex": Object {}, [exp] "_stringIndex": Object { [exp] "$map_Вторник": 9, [exp] }, [exp] }, [exp] "size": 1, [exp] }
Aleksei
вот и в сафари попробовал, тоже все норм, а там JSC
Denis
А зачем использовать Set?
Kyrylo
ну и возможно у тебя Set во что-то транспилится
Valentin
Мне нужно проверить что все методы которые дергает js из java - реализованы
Быстрого и простого решения нет. Это большая проблема для многих продуктов и компаний; я не могу ничего обещать, но шансы велики что в следующем году эта проблема как-то решится.
Valentin
Как именно и когда - вопрос все еще открытый.
Alexander
Быстрого и простого решения нет. Это большая проблема для многих продуктов и компаний; я не могу ничего обещать, но шансы велики что в следующем году эта проблема как-то решится.
решиться это может, как я вижу только одним способом, добавление в нетив методов Has (на базе таблиц задействованных классов с металанными).... для проверки, которыми в JS можно описать тесты... либо юзать прям в компонентах...