Как запустить модульные тесты Angular 7 с пользовательскими настройками environment.test.ts?

Проблема с вашим кодом заключается в том, что метод Bar::testPrivate - private, поэтому он не может быть переопределен дочерними классами. Во-первых, я рекомендую вам ознакомиться с видимостью в PHP - http://www.php.net/manual/en/language.oop5.visibility.php . Там вы узнаете, что только методы public и protected класса членов класса могут быть переопределены, private не могут.

В качестве хорошего примера попробуйте изменить видимость метода Bar::testPrivate либо публичным, либо защищенным, без изменения чего-либо еще в вашем примере кода. Теперь попробуйте выполнить ваши тесты. Что происходит? Это:

PHP Неустранимая ошибка: уровень доступа к Foo :: testPrivate () должен быть защищен (как в классе Bar) или слабее

blockquote>

Большой вопрос вот почему?". Ну, теперь вы переопределили Bar::testPrivate с помощью частного Foo:testPrivate. Этот новый частный метод недоступен для Bar::test, поскольку частные члены класса видны только для их текущего класса, а не родительского / дочернего классов!

Поэтому, как вы можете видеть, ООП обеспечивает определенную количество инкапсуляции для членов класса, и это может быть довольно запутанным, если вы не нашли времени, чтобы понять это.

1
задан jkyoutsey 16 January 2019 в 19:44
поделиться

1 ответ

  1. Это было вызвано тем, что Visual Studio Code «помог» мне, импортировав: import { environment } from '@environments/environment.prod';
  2. Правильное место для fileReplacements находится в architect.test.options.fileReplacements.
  3. Чтобы VSCode никогда не «помог» мне снова, я переименую все файлы environment.*.ts, кроме environment.ts, во что-то вроде DO-NOT-IMPORT.ENVIRONMENT.*.ts. По крайней мере, это будет кричать на меня, если я получу неправильный импорт.
0
ответ дан jkyoutsey 16 January 2019 в 19:44
поделиться
Другие вопросы по тегам:

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