2016-07-05 3 views
1

J'ai travaillé sur un projet avec le framework Spring Boot java où les gars automatisaient la génération de docs API. Chaque fois que vous exécutez des tests de style BDD/Integration, un fichier d'impression api blue a été créé à partir de tests moka. Ensuite, il a généré le modèle générique generate-html-from-api. J'ai aimé cette approche car elle a deux avantages:Comment générer de la documentation html API à partir de tests moka BDD?

1) API docs are always correct and up-to-date 
2) saves time, because no need to write another documentation file (like apidoc). 

Quelqu'un at-il essayé et a un exemple de travail pour les projets de noeud? J'ai trouvé api-doc-test plugin, mais sa documentation est limitée. ? Idéalement, je voudrais juste courir:

mocha --recursive 

Ce qui générerait api-doc.html et placer sous test/tmp /. J'ai regardé swagger mais je ne veux vraiment pas spécifier deux fois l'information du point de terminaison et ce serait vraiment génial d'écrire une seule fois dans les tests BDD et d'avoir le double résultat (tests + docs) en même temps.

+0

FWIW nous n'avons pas créé Blueprint API pour être générés à partir. Au lieu de cela nous l'avons construit pour être un contrat testable de ce que l'API devrait être. C'est pourquoi nous avons construit https://github.com/apiaryio/dredd afin que vous puissiez tester votre implémentation par rapport à son contrat (API Blueprint)./Je suis l'auteur de API Blueprint/ – Zdenek

+0

@Zdenek Merci, ça change ma photo! Pour un petit démarrage, il vaut mieux écrire seulement un type de test, sinon c'est trop cher. Par conséquent, puis-je écrire des tests BDD/Intégration entiers avec API blueprint + Dredd au lieu d'utiliser mocha? – Centurion

+0

Si cela est suffisant pour votre scénario alors oui vous pouvez (difficile de juger de l'extérieur) – Zdenek

Répondre

0

https://github.com/stackia/test2doc.js

Je travaille sur ce projet, qui permet la génération de documents (actuellement uniquement Blueprint API) à partir de tests BDD, exactement ce dont vous avez besoin.

exemple de code de test:

const doc = require('test2doc') 
const request = require('supertest') // We use supertest as the HTTP request library 
require('should') // and use should as the assertion library 

// For Koa, you should exports app.listen() or app.callback() in your app entry 
const app = require('./my-express-app.js') 

after(function() { 
    doc.emit('api-documentation.apib') 
}) 

doc.group('Products').is(doc => { 
    describe('#Products', function() { 
    doc.action('Get all products').is(doc => { 
     it('should get all products', function() { 
     // Write specs towards your API endpoint as you would normally do 
     // Just decorate with some utility methods 
     return request(app) 
      .get(doc.get('/products')) 
      .query(doc.query({ 
      minPrice: doc.val(10, 'Only products of which price >= this value should be returned') 
      })) 
      .expect(200) 
      .then(res => { 
      body = doc.resBody(res.body) 
      body.desc('List of all products') 
       .should.not.be.empty() 
      body[0].should.have.properties('id', 'name', 'price') 
      body[0].price.desc('Price of this product').should.be.a.Number 
      }) 
     }) 
    }) 
    }) 
})