Jest терпит неудачу, когда CSS использует @import

Вот простой пример (без проверки ошибок) использования ReflectionClass:

function accessProtected($obj, $prop) {
  $reflection = new ReflectionClass($obj);
  $property = $reflection->getProperty($prop);
  $property->setAccessible(true);
  return $property->getValue($obj);
}

Я знаю, что вы сказали, что ограничены 5.2, но это было 2 года назад 5.5 является самой старой поддерживаемой версией , и я надеюсь помочь людям с современными версиями.

0
задан g00glen00b 4 March 2019 в 09:13
поделиться

1 ответ

Когда вы запускаете свое приложение в процессе разработки, процесс сборки осуществляется с помощью веб-пакета / пакета / любого другого инструмента, который вы используете.

Эти инструменты позволяют вам (с помощью плагинов) делать что-то вроде импорта css в javascript, а затем, в конце концов, выплевывать его обратно как css. Это не нативная особенность JavaScript.

Jest работает на узле js, который не обладает всеми функциями веб-пакета и не может анализировать raw css и т. Д.

Итак, когда у вас была ошибка "SyntaxError: /Users/thiagofacchini/Documents/atomix/src/library/atoms/Label/styles.css: Support for the experimental syntax 'decorators-legacy' isn't currently enabled (2:1):"

, это на самом деле nodejs, пытающийся проанализировать CSS как javascript! Вы можете прочитать больше о том, что это было, хотя вы делали здесь https://www.sitepoint.com/javascript-decorators-what-they-are/

Так как вы управляете CSS в вашей среде jest?

в конфигурации jest вы настроили ее так, чтобы не импортировать css, а вместо этого импортировать пустой модуль.

сначала установите npm install-obj-proxy

, а затем добавьте следующее в свой jest.config.js

moduleNameMapper: {
    "\\.css$": "identity-obj-proxy",
    "^lodash-es$": "lodash"
},
0
ответ дан Michael Knight 4 March 2019 в 09:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: