Node.jsとExpressフレームワークを学んでいます。私はジャスミンの大ファンです。ですから、できる限りジャスミンを使いたいのですが、Expressをジャスミンでテストする良い方法が見つかりません。たとえば、app.jsでルートをテストするにはどうすればよいですか?
App.jsにこのルートがある場合:
app.get('/', function(req, res) {
...
});
ジャスミンを使用してテストするにはどうすればよいですか?
Jasmine-node node.jsでjasmineを簡単に使用できるようにします。彼らのサイトにはいくつかの例があります。別の例はから見つけることができます http://blog.drewolson.org/post/14684497867/web.archive.org
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());
});
});
});
いくつかの前提条件:
npm i -D jasmine@2
npm i -D supertest@3
jasmine init
を使用して初期Jasmine構成を作成します(注:このコマンドの実行をまだ行っていない場合は、最初にJasmineをグローバルにインストールする必要があります)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"
},
試してみてください http://frisbyjs.com/
私はそれを使う機会がありませんでしたが、同じ問題の解決策を探していたので、これは私が見つけることができた最高のものでした。
ジャスミンでスーパーテストを使用できますが、手動でエラーを渡す必要があります。少し前に、GitHubプロジェクトに関する問題が開かれました。
ジャスミンで約束通りのスーパーテストを使ってみることができます。それは私のために働いています: https://github.com/WhoopInc/supertest-as-promised
ここではいくつかの例を示します。
たぶんあなたは 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);
})
})