4

私は最初の Koa.js アプリを書いている最中で、最近async/の ES2016 (別名 ES7) 機能を導入したのでawait、これらを利用したいと考えていました。

私の Google のスキルでは十分ではないことがわかりました。見つけたコードのスニペットは、標準の Koa (ジェネレーターを使用) のものか、ES7 ほどの最先端ではないものでした。

テストを実行する方法については、以下の回答を参照してください。

4

1 に答える 1

6

私はまだ初心者なので、これの多くはかなり最適化できる可能性がありますが、これが私にとってうまくいったことです.

基本的に、ここにファイルをダンプするだけです。かなり簡単なはずです。


私の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 を使用しようとしている人々の助けになることを願っています。

于 2015-10-27T13:32:33.563 に答える