Когда я запускаю набор тестов Jest для своего проекта React Native (на базе Ignite Andross 2.1.0), я получаю следующую ошибку:
console.error node_modules/fbjs/lib/warning.js:33
Предупреждение: неверный тип реквизита: неверный реквизит «источник», указанный для «изображения». в изображении (создано ConvoCard) в ConvoCard в представлении (создано компонентом) в компоненте
Причина ошибки в том, что я должен передать png-файл в компонент ConvoCard
в качестве опоры source
реактивного компонента Image
, но в тестовой среде этот актив повреждался.
После некоторого копания я смог увидеть, что, когда я запускал react-native в обычном режиме, требуемый актив записывался в консоль с числом, а когда я запускал тестовый набор, он записывался в консоль в пустой объект, из-за этой строки в моем файле package.json
, в котором используется identity-obj-proxy
:
"moduleNameMapper": {
"^.+\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "identity-obj-proxy"
},
Насколько я знаю, это ожидаемое поведение identity-obj-proxy
; он используется для замены всех операторов require(asset)
в коде специальным объектом, который имитирует любой метод, с которым он вызывается; поэтому я не уверен, как поступить. Я понятия не имею, как мои операторы require()
заменяются числами, когда мой код запускается в среде разработки (это сборщик Metro?), поэтому я не знаю, как предоставить эти числа свойству Image
source
при запуске Jest, чтобы правильно имитировать необходимые активы.
Я хотел бы получить ответ на этот вопрос, а также быстрое объяснение того, как/почему сборщик Metro (если это сборщик Metro) заменяет мои активы числами, поскольку сборщик плохо документирован. Спасибо!