#react-native #jestjs #expo #babeljs #babel-jest
#react-native #jestjs #выставка #babeljs #babel-jest
Вопрос:
Я работал в React Native с использованием Expo CLI и недавно начал сталкиваться с проблемой с моими модульными тестами, которые завершились неудачей по одной общей причине. Трассировка стека приведена ниже
Cannot read property 'toString' of undefined
at Converter.toBase64 (node_modules/convert-source-map/index.js:61:46)
at Converter.toComment (node_modules/convert-source-map/index.js:65:21)
at generateCode (node_modules/@babel/core/lib/transformation/file/generate.js:78:76)
at run (node_modules/@babel/core/lib/transformation/index.js:55:33)
at run.next (<anonymous>)
at transform (node_modules/@babel/core/lib/transform.js:27:41)
at transform.next (<anonymous>)
at evaluateSync (node_modules/gensync/index.js:244:28)
at sync (node_modules/gensync/index.js:84:14)
Моя версия узла — node: 12.18.4. Интересно, что вызвало эти ошибки, поскольку все работало отлично. В моей локальной системе они работают нормально, иногда, но процесс CI имеет тенденцию к случайному сбою, что снижает общие показатели покрытия кода.
Модульный тест, который я пытаюсь запустить, очень прост, как написано ниже
it('Renders Strings as expected', () => {
expect(received).toStrictEqual(expected)
})
Ответ №1:
Для тех из вас, кто все еще блуждает в поисках ответа на приведенный выше вопрос. Проблема заключалась в самой библиотеке convert-source-map, которая должна была обрабатывать это исключение.
Я разветвил фактический репозиторий и обработал это исключение в строке 64 методом toBase64. Теперь метод выглядит как что-то
Converter.prototype.toBase64 = function () {
var json = this.toJSON();
return (SafeBuffer.Buffer.from(json, 'utf8') || "").toString('base64');
};
Теперь все работает нормально.
Оригинальный метод был примерно таким
Converter.prototype.toBase64 = function () {
var json = this.toJSON();
return SafeBuffer.Buffer.from(json, 'utf8').toString('base64');
};