web-dev-qa-db-ja.com

ジャスミンを使用してExpress.jsをテストします

Node.jsとExpressフレームワークを学んでいます。私はジャスミンの大ファンです。ですから、できる限りジャスミンを使いたいのですが、Expressをジャスミンでテストする良い方法が見つかりません。たとえば、app.jsでルートをテストするにはどうすればよいですか?

App.jsにこのルートがある場合:

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

ジャスミンを使用してテストするにはどうすればよいですか?

23
user2730490

Jasmine-node node.jsでjasmineを簡単に使用できるようにします。彼らのサイトにはいくつかの例があります。別の例はから見つけることができます http://blog.drewolson.org/post/14684497867/web.archive.org

7
Matti Lehtinen

Jasmine 2以降、Node.js環境でJasmineを使用するのは非常に簡単です。 express アプリをテストするには、Jasmineを supertest と組み合わせて使用​​することをお勧めします。

このようなテストは次のようになります。

project/spec/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. プロジェクトにdev依存関係としてJasminev2をインストールします:npm i -D jasmine@2
  2. プロジェクトにdev依存関係としてsupertestv3をインストールします:npm i -D supertest@3
  3. jasmine initを使用して初期Jasmine構成を作成します(注:このコマンドの実行をまだ行っていない場合は、最初にJasmineをグローバルにインストールする必要があります)
  4. 「Spec.js」で終わる仕様を作成します(ServerSpec.jsなど)

Jasmineの構成は次のようになります。

project/spec/support/jasmine.json

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

仕様(テストスイート)を実行するには、これを npmスクリプト に追加し、npm test(または単にnpm t)を実行します。

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

試してみてください http://frisbyjs.com/

私はそれを使う機会がありませんでしたが、同じ問題の解決策を探していたので、これは私が見つけることができた最高のものでした。

4
rowanu

ジャスミンでスーパーテストを使用できますが、手動でエラーを渡す必要があります。少し前に、GitHubプロジェクトに関する問題が開かれました。

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

1
Henry Tseng

ジャスミンで約束通りのスーパーテストを使ってみることができます。それは私のために働いています: https://github.com/WhoopInc/supertest-as-promised

ここではいくつかの例を示します。

enter image description here

enter image description here

1
reutsey

たぶんあなたは supertest with 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);
  })
})
0
warchimede