Подтвердить что ты не робот

Используйте жасмин для проверки Express.js

Я изучаю Node.js и Express framework. Я большой поклонник жасмина. Поэтому я хочу использовать жасмин всякий раз, когда могу, но не могу найти хороший способ тестирования Express с жасмином. Например, как проверить маршрут в app.js?

Если у меня есть этот маршрут в app.js:

app.get('/', function(req, res) {
  ...
});

Как я могу использовать жасмин для его проверки?

4b9b3361

Ответ 2

Вам следует попробовать http://frisbyjs.com/

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

Ответ 3

Так как Жасмин 2 очень просто использовать Жасмин в среде Node.js. Чтобы протестировать express приложения, я рекомендую использовать Jasmine в сочетании с supertest.

Вот как выглядит такой тест:

Проект/спецификации/ServerSpec.json

const request = require('supertest');
const app = require('../app');

describe('Server', () => {
  describe('REST API v1', () => {
    it('returns a JSON payload', (done) => {
      request(app)
        .get('/rest/service/v1/categories')
        .expect(200)
        .expect('Content-Type', 'application/json; charset=utf-8')
        .end((error) => (error) ? done.fail(error) : done());
    });
  });
});

Некоторые предварительные условия:

  • Установите Jasmine v2 в качестве зависимости от вашего проекта: npm i -D [email protected]
  • Установите supertest v3 как зависимость dev в вашем проекте: npm i -D [email protected]
  • Создайте начальную конфигурацию Jasmine с помощью jasmine init (Примечание. Сначала вам нужно установить Jasmine глобально, если вы еще не сделали этого, чтобы запустить эту команду)
  • Создайте спецификацию, заканчивающуюся на "Spec.js" (например, ServerSpec.js)

Вот как выглядит конфигурация Jasmine:

Проект/спецификации/поддержка/jasmine.json

{
  "helpers": [
    "helpers/**/*.js"
  ],
  "random": false,
  "spec_dir": "spec",
  "spec_files": [
    "**/*[sS]pec.js"
  ],
  "stopSpecOnExpectationFailure": false
}

Чтобы запустить ваши спецификации (тестовые сеты), просто добавьте это в npm scripts и выполните npm test (или просто npm t)

  "scripts": {
    "test": "jasmine"
  },

Ответ 4

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

https://github.com/jasmine/jasmine-npm/issues/31

Ответ 5

Вы можете попробовать использовать supertest-as-обещанное с Jasmine. Он работает для меня: https://github.com/WhoopInc/supertest-as-promised

Вот несколько примеров:

введите описание изображения здесь

введите описание изображения здесь

Ответ 6

Возможно, вы могли бы попробовать supertest с mocha.

Вот простой пример:

var request = require('supertest')
  , express = require('express');

var app = express();

app.get('/user', function(req, res){
  res.send(200, { name: 'toto' });
});


describe('GET /user', function(){
  it('should respond with json', function(done){
    request(app)
      .get('/user')
      .set('Accept', 'application/json')
      .expect('Content-Type', 'json')
      .expect(200, done);
  })
})