Задать вопрос
Muranx
@Muranx
кто понял this тот в цирке не смеётся

Не работает функция beforeEach фрэймворка Mocha?

Здравствуйте!

describe('province', function(){
     let provinceAsia;
     beforeEach(function(){
          console.log('Hello')
          provinceAsia = new Province(sampleProvinceData());
     });
     it(`shortfall (${provinceAsia.shortfall})`, function(){
          expect(provinceAsia.shortfall).equal(5);
     });
     it(`Прибыль региона - profit (${provinceAsia.profit})`, function(){
          expect(provinceAsia.profit).equal(230);
     });
});

не работает функция beforeEach( fn ), т.е. не срабатывает даже console.log("") в колбэке, пробовал её консолить, сама функция доступна на данной страничке, пробовал запускать данную функцию с первым аргументом beforeEach( "name", fn) (т.к. в попытках продебажить забрался в саму библиотеку mocha.js и там в на первом же действие вроде как показана функция в которой должен быть присутствовать первый аргумент, но скорее всего он опциональный). Возможно дело в подключении самого фрэймворка mocha.js, поэтому прелагаю html

<!DOCTYPE html>
<html>
<head>
     <title>Mocha Tests</title>
     <link href="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.css" rel="stylesheet" />
     <script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.2.0/mocha.js"></script>
     <script src="https://cdn.rawgit.com/jquery/jquery/2.1.4/dist/jquery.min.js"></script>
     <script src="https://cdn.rawgit.com/Automattic/expect.js/0.3.1/index.js"></script> 
     <script>
          mocha.setup('bdd');
     </script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.5.0/chai.js"></script>
     <script>
     let assert = chai.assert,
          expect = chai.expect;
     </script>
</head>
<body>
     <!-- здесь один дескрайб блок показанный выше -->
     <div id="mocha"></div>
</body>
</body>
     <script>
          mocha.checkLeaks();
          mocha.run();
     </script>
</html>


Или дело в моей невнимательности... В общем просьба помочь разобраться, в сети куча инфы как подключить mocha.js с помощью ноды и нпм, но мало инфы подключения этой фрэ-ворка в браузере.
  • Вопрос задан
  • 73 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
А у вас же, по идее, всё падает ещё на этапе ${provinceAsia.shortfall}, разве нет? В переменной не определено значение, а вы у неё пытаетесь свойство получить. И это происходит ещё до исполнения beforeEach, вот до неё и не доходит даже.

получается описание блока It(...) срабатывает даже до beforeEach( fn )?
Давайте будем пользоваться корректной терминологией. У вас есть две функции: beforeEachи it. Эти функции принимают аргументы. Аргументы вычисляются первыми, потом происходит вызов самих функций.
Поэтому поток исполнения выглядит так:
  1. Вы передаёте в beforeEach в качестве аргумента свою функцию.
  2. Исполняется функция beforeEach, но не ваша функция-аргумент. Функция beforeEach только регистрирует ваш колбэк.
  3. Вычисляются аргументы для функций it. Здесь происходит падение.
  4. Фреймворк вызывает колбэки, которые вы передали в функцию it, перед этим каждый раз вызывая колбэк, который вы передали в beforeEach. Таки образом переменная provinceAsia имеет значение внутри колбэков it, но не имеет значения на момент выполнения колбэка функции describe.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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