私は最初の Koa.js アプリを書いている最中で、最近async
/の ES2016 (別名 ES7) 機能を導入したのでawait
、これらを利用したいと考えていました。
私の Google のスキルでは十分ではないことがわかりました。見つけたコードのスニペットは、標準の Koa (ジェネレーターを使用) のものか、ES7 ほどの最先端ではないものでした。
テストを実行する方法については、以下の回答を参照してください。
私は最初の Koa.js アプリを書いている最中で、最近async
/の ES2016 (別名 ES7) 機能を導入したのでawait
、これらを利用したいと考えていました。
私の Google のスキルでは十分ではないことがわかりました。見つけたコードのスニペットは、標準の Koa (ジェネレーターを使用) のものか、ES7 ほどの最先端ではないものでした。
テストを実行する方法については、以下の回答を参照してください。
私はまだ初心者なので、これの多くはかなり最適化できる可能性がありますが、これが私にとってうまくいったことです.
基本的に、ここにファイルをダンプするだけです。かなり簡単なはずです。
私のapp.js
:
import koa from 'koa';
import router from 'koa-router';
let koarouter = router();
// Intialize the base application
export const app = koa();
koarouter.get('/', async function() {
this.body = 'Hello World!';
});
// Initialize koa-router
app.use(koarouter.routes());
if (!module.parent) {
app.listen(3000);
console.log('Listening on http://localhost:3000');
}
myapp-spec.js
- テストはここにあります:
import {app} from '../app';
import * as sap from 'supertest-as-promised';
const request = sap.agent(app.listen());
import chai from 'chai';
const should = chai.should();
describe('/', () => {
it('should return 200 OK', async function() {
const response = await request.get('/');
response.status.should.equal(200);
});
it('should say "Hello World!"', async function() {
const response = await request.get('/');
response.text.should.equal('Hello World!');
});
});
mocha-babel.js
、テストのトランスパイル用:
'use strict';
require('babel/register')({
'optional': [ 'es7.asyncFunctions' ]
});
index.js
アプリ自体のバベルトランスパイルの良さのための私のエントリーポイント:
'use strict';
require('babel/register'); // Imports babel - auto transpiles the other stuff
require('./app'); // this is es6 - gets transpiled
最後に、 my のスクリプト セクションpackage.json
:
"scripts": {
"pretest": "npm run lint -s",
"test:unit": "echo '= test:unit ='; mocha --require mocha-babel",
"test:feature": "echo ' = test:feature ='; mocha --require mocha-babel feature",
"test": "npm run test:unit -s && npm run test:feature -s",
"start": "node index.js",
"lint": "echo '= lint ='; eslint ."
},
*_spec.js
ファイルを./feature/
ディレクトリに配置し、単体テスト (この投稿には示されていません) を./test/
mocha が自動的に検出する場所に配置することに注意してください。
これが、私のように、ECMAScript2016 / ES7 の新しい素晴らしい async/await 機能で Koa を使用しようとしている人々の助けになることを願っています。