valid try only node funciona for example ejemplos como catch await async javascript async-await bdd koa ecmascript-7

javascript - try - ¿Cómo puedo usar ES2016(ES7) async/await en mis pruebas de aceptación para una aplicación Koa.js?



node js async await ejemplos (1)

Todavía soy un principiante, por lo que es probable que gran parte de esto se pueda optimizar considerablemente, pero esto es lo que funcionó para mí.

Básicamente voy a volcar mis archivos aquí, deberían ser bastante sencillos.

Mi aplicación.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 - las pruebas van aquí:

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 , para transpilar las pruebas:

''use strict''; require(''babel/register'')({ ''optional'': [ ''es7.asyncFunctions'' ] });

Mi punto de entrada de index.js , para Babel transpiling goodness para la aplicación en sí:

''use strict''; require(''babel/register''); // Imports babel - auto transpiles the other stuff require(''./app''); // this is es6 - gets transpiled

Y finalmente, la sección de scripts en mi 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 ." },

Tenga en cuenta que pongo mis archivos *_spec.js en el directorio ./feature/ y mis pruebas unitarias (que no se muestran en esta publicación) en ./test/ donde mocha los encuentra automáticamente.

Espero que esto ayude a las personas que, como yo, están tratando de usar Koa con las nuevas e increíbles características async / await de ECMAScript2016 / ES7.

Estoy en el proceso de escribir mi primera aplicación Koa.js, y habiéndome presentado recientemente a ES2016 (también conocido como ES7) características de async / await , quería hacer uso de estos.

Descubrí que mis habilidades de Google no estaban a la altura de la tarea, y los pocos fragmentos de código que pude encontrar eran para el Koa estándar (usando generadores) o de otra manera no como sangrado de borde como el ES7.

Vea mi respuesta a continuación para saber cómo hice funcionar mis pruebas.