
arts
02.10.2017
14:43:28
Алсо, есть tsc-watch

Oleg
02.10.2017
14:44:11
опа
ща гляну
спасибо

Google

Mikhail
02.10.2017
14:45:31
Привет всем. Я пишу тесты с помощью mocha и chai. Хочу протестировать функцию для работы с rss. Она принимает на вход url, а возвращает массив из 25 объектов. Не совсем понимаю, что писать тут:
expect(rss(uri)).to.equal(???);
Мне надо предварительно создать этот массив из 25 объектов? Я уж молчу про то, что он будет постоянно меняться. И мне при каждом запуске теста надо его обновлять?
Или я что-то не так делаю?

Oleg
02.10.2017
14:47:49

KlonD90
02.10.2017
14:47:50
Ну тебе нужно раздробить это по юнитам. Первый типа удостоверяется что ты делаешь запрос по этому урлу. Дальше стабаешь функцию достающую данные И можешь сравнить результат.

Oleg
02.10.2017
14:48:10

Mikhail
02.10.2017
14:55:02

KlonD90
02.10.2017
14:57:13
А что ты хочешь тестировать? Работу базы данных или свой код?

Mikhail
02.10.2017
15:00:37

KlonD90
02.10.2017
15:01:12
Да зачем. У тебя смысл именно в 25 элементах?

Oleg
02.10.2017
15:01:56
https://www.npmjs.com/package/ntypescript Вот такая либа вместо него
а не, он тоже мертв

Google

Oleg
02.10.2017
15:04:03
https://github.com/basarat/byots

Mikhail
02.10.2017
15:04:34
Да зачем. У тебя смысл именно в 25 элементах?
Какие-то философские вопросы. Вообще смысл в том, чтобы проверить, что при запросе на указанный url мне прилетает массив объектов с определёнными полями. Количество и содержимое не так важно


Konstantin
02.10.2017
15:10:36
Когда тестируется функционал конкретной функции, то это называется юнит-тест. Для юнит тестов создается фиктивное окружение, которое эмулирует «идеальные» или, наоборот, «неидеальные» условия, в которых функция может быть использована. Т.е. делать в этом случае реальный запрос к реальной БД смысла нет, ведь данные не важны. Создается тестовый набор данных (фикстуры, fixtures), которые «скармливаются» тестируемой функции и уже после выполнения функции, проверяется её вывод.
const rss = <ТЕЛО АСИНХРОННОЙ ФУНКЦИИ>;
...
// Где-то в тестах
const result = rss(url);
expect(result).to.be.instanceof(Promise);
result.then((data) => {
expect(data).to.be.an('array');
expect(data).to.have.length(25);
});

Oleg
02.10.2017
15:11:13

Mikhail
02.10.2017
15:12:35

Oleg
02.10.2017
15:13:54
typings/globals/core-js/index.d.ts(18,43): error TS1005: ';' expected.
typings/globals/core-js/index.d.ts(27,27): error TS1005: ',' expected.

Vania
02.10.2017
15:15:42
Меня не забанят за вопросы по (компьютерным сетям/nginx)?

Mikhail
02.10.2017
15:17:18
Когда тестируется функционал конкретной функции, то это называется юнит-тест. Для юнит тестов создается фиктивное окружение, которое эмулирует «идеальные» или, наоборот, «неидеальные» условия, в которых функция может быть использована. Т.е. делать в этом случае реальный запрос к реальной БД смысла нет, ведь данные не важны. Создается тестовый набор данных (фикстуры, fixtures), которые «скармливаются» тестируемой функции и уже после выполнения функции, проверяется её вывод.
const rss = <ТЕЛО АСИНХРОННОЙ ФУНКЦИИ>;
...
// Где-то в тестах
const result = rss(url);
expect(result).to.be.instanceof(Promise);
result.then((data) => {
expect(data).to.be.an('array');
expect(data).to.have.length(25);
});
Спасибо большое. Понял, что мне делать

Nurlan
02.10.2017
15:26:19

Oleg
02.10.2017
15:26:57

Mikhail
02.10.2017
15:36:28

Oleg
02.10.2017
15:37:12

Artyom
02.10.2017
15:55:28
Почему catch не срабатывает?

Konstantin
02.10.2017
15:57:45
await перед вызовом функции поставить надо

Artyom
02.10.2017
15:58:31
Спасибо!

Google

Konstantin
02.10.2017
15:58:34
const D3Available = await checkD3()

Artyom
02.10.2017
15:58:48
Ага, заработало
Понять бы еще это...

Dreamerinnoise
02.10.2017
17:50:06
Привет, кто с jade/pug работал? Как обойти невозможность динамических иклюдов?
script("type/javascript)
include #{BRAND_NAME}/api.js
Так не иклюдит. Кто как обходил это?

Yaroslav
02.10.2017
17:52:43

Dreamerinnoise
02.10.2017
17:53:39
таких моментов в шаблоне больше одного. Но мысль я понял.

Artyom
02.10.2017
18:57:04
bot.sendMessage возвращает промис

Morsik
02.10.2017
18:58:02
ты юзаешь await внутри не async функции
у тебя лямбда в фориче не асинк

Artyom
02.10.2017
18:58:35
Прикольно
Подправил
Заработало) Спасибо

Morsik
02.10.2017
19:00:07
а еще у тебя sendUpdateStatus вернет промис, который зарезолвится до того как бот пошлет сообщения

Artyom
02.10.2017
19:00:42
Это не важно
Я до этого думал, что создание асинк функции возвращает промис
Я ошибался

Morsik
02.10.2017
19:01:42
ну, когда словишь unhandled promise rejection, почувствуешь что сделал не так

Artyom
02.10.2017
19:02:00
Ага, было такое(
А что делать?

Google

Morsik
02.10.2017
19:03:14
return Promise.all(userList).map(user=> <sending message>)
(если у тебя блюбирд)

Artyom
02.10.2017
19:03:35
Не, просто нода новая
А есть что-нибудь, что собирает console.log в ноде и в файл пишеТ?

Fedir
02.10.2017
19:21:42
bash
program > file.txt

Artyom
02.10.2017
19:21:55
грусть

Fedir
02.10.2017
19:22:08
это из действительно очевидных вещей

Morsik
02.10.2017
19:22:08
npmjs.com > logger

Nikolay
02.10.2017
19:31:52

Artyom
02.10.2017
19:37:31
Пока не нашел. У меня уже куча консоль логов написано. Конкретно вопрос, можно что-то подключить и в файл их писать?
Нашел
https://stackoverflow.com/a/21061306/8438996

Morsik
02.10.2017
19:43:28
а ты любишь велосипеды, как я погляжу

Таймураз
02.10.2017
19:50:44

Artyom
02.10.2017
19:51:29
Да проблема в том, что все уже написано на консолях
А так спасибо

Morsik
02.10.2017
19:51:47
глобал реплейс

Таймураз
02.10.2017
19:52:56

Morsik
02.10.2017
19:53:32
всмысле везде использует console.*

Google

Таймураз
02.10.2017
19:53:57
Ctrl shift f console.log

Artyom
02.10.2017
19:54:12
ну да

Morsik
02.10.2017
19:54:26
или сразу ctrl-shift-r

Artyom
02.10.2017
19:54:28
Да мне бы побыстрее сделать =\

Таймураз
02.10.2017
19:54:44

Morsik
02.10.2017
19:55:18
если слишком много - заколебешься же

Таймураз
02.10.2017
19:55:31

Morsik
02.10.2017
19:55:49
ну или как вариант как в стековерфлоу заоверрайдить console.log

Таймураз
02.10.2017
19:56:12

Morsik
02.10.2017
19:56:32
в качестве быстрого костыля сойдет

Таймураз
02.10.2017
19:56:59

Morsik
02.10.2017
19:57:27
да, есть такое)

Евгений
02.10.2017
20:17:25
как доработать эту функцию чтоб при ее следующем вызову мелодия отключалась ?
function soundClick() {
var audio = new Audio(); // Создаём новый элемент Audio
audio.src = '111.mp3'; // Указываем путь к звуку "клика"
audio.autoplay = true; // Автоматически запускаем
}
start.addEventListener("click", soundClick);
чтоб при еще одном клике короче вырубалась мелодия
а то выходит мелодия на мелодию накладываеться

Таймураз
02.10.2017
20:35:36