2016-07-05 8 views
1

Я работал над проектом с java-инфраструктурой Spring Boot, где ребята автоматизировали создание документов API. Каждый раз, когда вы запускаете тесты стиля BDD/Integration, существует файл печати api blue, созданный из мокко-тестов. Затем он выполнил проект generate-html-from-api. Мне понравился этот подход, поскольку он имеет два преимущества:Как сгенерировать документацию API html из тестов Mocha BDD?

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

Кто-нибудь пытался и имеет рабочий пример для проектов узлов? Я нашел api-doc-test плагин, однако его документация ограничена. ? В идеале я хотел бы просто запустить:

mocha --recursive 

Какой бы генерировать Апи-doc.html и место под тест/TMP /.

Я посмотрел на чванство, но я действительно не хочу указывать информацию о конечной точке дважды, и было бы действительно просто просто написать один раз в тестах BDD и получить двойной результат (тесты + документы) одновременно.

+0

FWIW мы не создали API Blueprint, чтобы быть сгенерированы из. Вместо этого мы построили его как проверяемый контракт того API. Вот почему мы создали https://github.com/apiaryio/dredd, чтобы вы могли протестировать свою реализацию против своего контракта (API Blueprint)./Я автор API Blueprint/ – Zdenek

+0

@Zdenek Спасибо, что меняет мое изображение! Для небольшого запуска стоит написать только один тип тестов, иначе это слишком дорого. Поэтому могу ли я написать целые тесты BDD/Integration с проектом API + Dredd вместо использования мокко? – Centurion

+0

Если этого достаточно для вашего сценария, то да, вы можете (трудно судить извне) – Zdenek

ответ

0

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

Я работаю над этим проектом, что позволяет порождающие документы (в настоящее время только API план) из тестов BDD, именно то, что вам нужно.

Тестовый пример кода:

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 
      }) 
     }) 
    }) 
    }) 
}) 

 Смежные вопросы

  • Нет связанных вопросов^_^