2016-09-21 2 views
0

Я использую jasmine-узел npm для модульного тестирования моего кода javascript. Насколько я понимаю, он использует Jasmine 1.3.Проверьте, разрешено или отклонено обещание с Jasmine 1.3 в Nodejs.

Большая часть моего кода включает асинхронные обещания (с использованием встроенных обещаний ES6, а не одной из сторонних библиотек Promise). Я прочитал, что у Jasmine 2 есть метод под названием done(), который вы можете вызывать из «затем» или «поймать» вызов по вашему обещанию. Что я могу сделать в Jasmine 1.3? Есть ли способ имитировать это? Или есть лучший подход или разная ветвь жасминового узла?

Смотрите этот вопрос: Test if a promise is resolved or rejected with Jasmine in Nodejs

+0

Насколько я знаю, Jasmine 1.x не имеет хорошей асинхронной тестовой поддержки. Если это вообще возможно, я перейду к Jasmine 2.x. Это намного лучше по ряду причин. Другая возможность, которая также не очень хорошая, - это использовать насмешливость и укупорку всего вашего асинхронного кода, чтобы он мог выполняться синхронно в одном тике. Похоже, что 1.3 действительно поддерживает асинхронную поддержку, но немного беспорядочно. http://jasmine.github.io/1.3/introduction.html#section-Asynchronous_Support –

+0

Мне бы хотелось перейти на Jasmine 2, но мне нравится удобство модуля npm, который все еще находится на уровне 1.3. Я наткнулся на модуль Jasmine.Async, который выглядит многообещающим, что позволяет называть метод «done()» как Jasmine 2, но я все еще изучаю. –

+0

Я думаю, вы ошибаетесь. Модуль npm с жасминовым сердечником - тот, который вы хотите. https://www.npmjs.com/package/jasmine-core –

ответ

1

Вы должны избегать использования модуля жасмин-узла. Он больше не поддерживается (последнее совершение было более двух лет назад, а ОР нагромождали). Вместо этого вы должны использовать jasmine-core, официальный комплект жасмина.

И, честно говоря, комплекты этих пакетов не слишком ясны. Вы действительно хотите установить пакет jasmine. Это дает вам инструменты командной строки, которые помогут вам создать проект для использования с жасмином и дать вам команды для запуска спецификаций. Например (из документации):

Локальная установка:

npm install --save-dev jasmine 

Для инициализации проекта для Жасмин

./node_modules/.bin/jasmine init 

потомству свой проект с некоторыми примерами

./node_modules/.bin/jasmine examples 

Для запуска ваш тестовый комплект

./node_modules/.bin/jasmine 

Вы также можете установить жасмин глобально, как это:

npm install -g jasmine 

Таким образом, вы можете избежать предваряя каждый вызов с ./node_modules/.bin/. Но я предпочитаю использовать локально установленный экземпляр для всех зависимостей проекта. Это гарантирует, что вы используете ту же версию зависимостей, которую ожидает ваш проект.

+0

Спасибо. Я попробую это. –

+0

Мне нужно ввести «./node_modules/.bin/jasmine init», поскольку описанный вами процесс не изменил мой путь, но в остальном он работал нормально. –

+0

'npm install -g jasmine' должен установить его глобально. Но лучше всего использовать локально установленную версию, если она зависит от проекта. Я уточню свой ответ. –