как проверить частную функцию вне реагирующего компонента - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть частная функция вне компонента. Звучит удобнее проводить тестирование только для одной функции, чем тестировать ее внутри MyComponent, но это личное, не экспортируемое.

function func(){
 return something;
}

export default class MyComponent extends Component {

render <SomeComponent someProp={func()} />
}

Я использую mocha и enzyme для проверки, и мне интересно, есть ли способ проверить приватную функцию, а не проверять ее внутри компонента.

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

func определяется в области видимости модуля. Невозможно достичь переменных за пределами области, в которой они были определены в JavaScript.

Даже если бы func было экспортировано, было бы невозможно обеспечить для него надлежащие модульные тесты, то есть проверить func в одном тесте, а затем проверить модуль в зависимости от func (MyComponent) в другом тесте с func насмехается / шпионит. func относится к модулю, его вызовы не могут быть отслежены или заблокированы.

Чтобы быть полностью тестируемым, func должен быть методом класса, это имеет смысл, если func и MyComponent связаны между собой. Или переместите func в другой модуль. В этом случае можно смоделировать модуль или, как объяснено в этот ответ , из-за того, как работают модули ES, func импорт может быть смоделирован / шпионить над модулем * import.

0 голосов
/ 06 сентября 2018

Трудно получить какое-либо значение из юнит-тестов для частных методов.

Почему вы можете этого хотеть?

  1. Увеличить тестовое покрытие KPI. Но как только частные методы вызываются public - они все равно будут учтены.
  2. Чтобы убедиться, что все работает ... Но выполнение тестов для частных методов может привести к:

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

    б. тесты для приватных методов - это хорошо, но компонент не работает (скажем, приватный метод должен быть вызван, но это не так) - ложное срабатывание

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...