Как и любой язык программирования или творение, которое мы создаем, угадайте, что с ним связано? Тестирование! Ура, а я думал, что тоже смогу сбежать от этого.

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

Если подумать обо всех элементах, которые мы изучили при тестировании Ruby, то да, мы можем сделать все это на Javascript… а это значит, что мой кошмар с выполнением ДВОЙНЫХ и ЗАПОЛНЕНИЙ на JAVASCRIPT пришел! Можно сказать, что тестирование в Javascript лучше или хуже, в зависимости от плюсов и минусов.

В Javascript мы используем среду тестирования под названием Jasmine, которая дает нам красивое расположение и описание всех тестов, которые мы написали и прошли (или не прошли). Однако вы открыли среду тестирования в своем браузере, а не на своем терминале.

Однако вы можете увидеть тесты jasmine в своем терминале, если загрузите node или npm (предположительно, у каждого есть какая-то версия npm на их веб-сайте). Вы помните, что в Ruby у нас было что-то, называемое файлом Gem, в котором хранились все наши пакеты. В Javascript это файл json, и мы можем сделать это с помощью npm. NPM позволяет нам создавать собственные файлы пакетов и загружать другие внешние пакеты от других разработчиков в наш файл json.

Вы также можете проверить, как работает пакет, вставив его в область консоли при проверке в браузере. Я узнал из подчеркивания пакета, упомянутого в ссылке ниже. Однако, к сожалению, вы можете использовать пакет только в области консоли в инструменте проверки браузера.

http://underscorejs.org/

Примечание. Я также забыл упомянуть, что NPM — это веб-сайт, на котором размещены пакеты для разработчиков. Вам нужна учетная запись, чтобы получить версию nom (я думаю).

https://www.npmjs.com/

Хотя мне не удалось на самом деле использовать пакеты, хотя у меня есть файл j-son, я почти уверен, что концепция лежит где-то там (я так близко, что знаю это! Я напишу это в другом блоге, как только пойму это вне!)

Вы можете проверить все имеющиеся у вас сопоставители по умолчанию, если зайдете в свой файл jasmine, и я думаю, что это jasmine.js…

Написание тестов на Javascript очень похоже на Ruby, где вы описываете и его…

Допустим, наш файл спецификаций предназначен для файла Airport.js. Этот файл будет называться Airport_Spec.js. Посмотрите, как у нас есть наше описание и это. У нас также есть оператор beforeEach, в котором мы также определяем переменные с новыми классами. Это действительно похоже на Ruby, только написанное с большим количеством фигурных скобок, квадратных скобок или точек с запятой.

Итак, что говорит наш тест на этом изображении выше.

  • Строка 1: мы определяем, для чего предназначен тест, с помощью нашего блока описания. В данном случае это класс аэропорта.
  • Строка 3: у нас есть beforeEach, где мы устанавливаем переменные, которые вызывают новые экземпляры для нашего теста, чтобы использовать их. Мы делаем это перед любым из наших тестов.

Однако для того, чтобы наши тесты выполнялись с использованием Jasmine, мы должны указать его в html-файле. Я считаю, что в большинстве случаев, когда вы загружаете пакеты из Jasmine, это обычно называется Spec runner.

Посмотрите в строке 21, как мы запросили спецификацию Airport, используя теги source и script. Вот как наш файл jasmine будет читать наши тесты. Итак, когда мы запускаем наш html-файл Spec Runner. Это должно выглядеть так, но с одним тестом.

Однако именно здесь огонь получает удовольствие. Что, если бы мы захотели проверить, сможет ли самолет взлететь при условии, что погода не штормовая? Т.е. если погода будет штормовой, самолету не придется взлетать.

Если мы подумаем об этом, не написав никакого кода, нам понадобится класс Weather, и нам понадобится метод, определяющий, если stormy = true, если stormy = false.

НО ЖДАТЬ! Этика кода состоит в том, чтобы не использовать один тестовый файл для двух классов! Угадай, что мы собираемся делать, мы собираемся сделать ЗАПЯТЬ! Вместо заглушек, как упоминается Руби, Жасмин называет их шпионами, и вы можете найти больше информации о шпионах на их веб-сайте.

Вы не узнаете, как написать шпиона, пока не увидите синтаксис.

Давайте проанализируем это. Итак, как вы можете сказать, если вы проводили тестирование на Ruby или другом коде, большая часть этого выглядит знакомой. Тем не менее, мы пройдемся по строчкам.

У нас есть «это», что в основном является нашим заявлением о том, что представляет собой этот тест.

Затем мы устанавливаем для нашего шпиона переменную с именем w. Мы создаем наши шпионские объекты, сначала упоминая класс и метод. Затем в следующей строке мы вызываем эту переменную с помощью этого метода, и «вызов Fake» — это то место, где мы начинаем изменять метод того, что он возвращает». Затем мы изменяем метод, чтобы он возвращал false.

Тогда все как у нас сейчас. Мы устанавливаем наш переменный аэропорт равным экземпляру нового аэропорта (который принимает нашего шпиона). Чтобы проверить, взлетает ли наш самолет, он должен сначала приземлиться, а затем попытаться взлететь. Наконец, мы ожидаем, что наш airport.airport(массив) не будет содержать самолет, как мы уже упоминали. ("Британский123")

Бум! Мы только что заглушили метод.

Это очень удобно, когда мы пытаемся реорганизовать наш код, чтобы наш файл спецификации имел только один фокус, то есть один класс, на котором нужно сосредоточиться.

Полезный тестовый материал:

Скажем, если мы хотим найти ошибку в нашем коде, мы можем использовать следующие методы…

console.log («»);

Обычно это выводит, чему равны переменные, элементы или даже методы. Это почти как «p» в RUBY, где мы можем исследовать содержимое вещей.

console.log('здесь');

Я видел эту очень интересную технику кода, реализованную тренером, и я предполагаю, что она делает то же самое, за исключением того, что она печатает код, который существует в блоке, методе функции, в который мы его поместили.

отладчик;

Отладчик довольно интересен, потому что, запустив его, вы можете зайти в свой файл проверки и начать анализировать, в какой строке какая ошибка. Инструменты разработчика вашего браузера на самом деле делают половину работы за вас, находя ошибки построчно, в отличие от RUBY, где вы должны «p» для всего. (Я уверен, что есть простой способ сделать это).

Другие забавные вещи:

Да, пока я делаю все самое интересное на Javascript в Makers, я также изучаю больше Javascript в Code Academy. Большинство скриншотов ниже или подобных этому взяты оттуда. Примечание. Я изучаю Javascript старой школы, так как есть новый, который сжимает этот. По крайней мере в моем понимании.

В этом примере нет ничего нового, но он показывает порядок приоритета переменных. Итак, мы видим здесь, что у нас есть переменная приветствие, равная «Ahoy». Однако в нашем методе приветствие у нас есть та же самая переменная, равная «Привет».

Так почему же, когда мы вызываем метод приветствия, он не говорит «Привет?». Там написано «Привет». Ну, я считаю, что переменная вне функции — это глобальная переменная. Когда мы устанавливаем новую переменную на что-то другое, мы фактически меняем это значение метода приветствия, потому что глобальные переменные можно вызывать, редактировать и изменять в любом месте нашего кода.

Следовательно, он печатает «Hello» вместо «Ahoy». Кроме того, не забывайте, что код считывается компьютером сверху вниз, прежде чем какой-либо вывод будет распечатан.

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

Это довольно интересный метод, потому что мы помещаем переменную с методом внутрь метода переменной. Вау, я знаю, что это звучит очень безумно, но нужно время, чтобы обдумать это, так как это может пригодиться позже.

Итак, что мы имеем здесь?

У нас есть квадратная переменная, у которой есть метод, возвращающий квадрат числа. Затем у нас есть кубическая переменная, эквивалентная методу, умножающему число на квадрат числа.

Если у переменной снова есть аргумент, который приходит вместе с ее методом. Затем вам нужно вызвать эту переменную с помощью метода (square(x), если мы действительно конкретны). Вы можете подумать, что это раз плюнуть, но позже, когда вы попытаетесь это сделать… это может пригодиться.

Действительно случайное отклонение от того, на что мы смотрели, — это метод «замены». Я почти уверен, что это метод Javascript, где, если вы хотите заменить «значение/содержимое» переменной, вы можете просто использовать замену.

Интересный факт дня:

Очень важно иметь в виду то, чего вы хотите достичь, участвуя в буткемпе по кодированию, учитывая, что времени так мало. Тем не менее, это нормально — не знать, к какому призу вы стремитесь поначалу. Вам не нужно быть таким строгим к себе, особенно если вы новичок в программировании. Хотя, как только вы это знаете, пришло время повысить уровень на ступень или две и начать стремиться к этому.