2013-09-20 2 views
18

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

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

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

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

ответ

0

Возможно, вы можете попробовать 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); 
    }) 
}) 
+2

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

+0

почему нисходящий? – Cmag

+8

он говорит, что любит Жасмин. он просит разрешения с Жасмином. этот ответ дает ему решение с Моккой. Мокка не Жасмин. – rowanu

4

Вы должны попробовать http://frisbyjs.com/

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

+0

Голосов без голосования? Хорошее усилие ... – rowanu

+1

В [Marketcloud] (http://www.marketcloud.it) мы тестируем наши эксплоиты expressjs api с frisbyjs, и мы очень довольны этим :) – fatmatto

1

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

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

2

С Жасмин 2 очень проста в использовании Жасмин в среде Node.js. Для тестирования express приложений с этим я рекомендую использовать Жасмин в комбинации с 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()); 
    }); 
    }); 
}); 

некоторых предпосылок:

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

Вот как конфигурация Жасмин выглядит следующим образом:

проекта/спецификации/поддержка/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" 
    }, 
Смежные вопросы