没关系吧?让我们来看看内部结构。

>

HoloClient. = function(options = {}) { returnnewPromise(function(resolve, reject) { options = _.pick(options, 'limit', 'startafter'); var path = `/devices`; var querystring = ({}, options)); if ) con(`GET ${()}${path}${querystring}`); needle.get(`${()}${path}${querystring}`, (resolve, reject)); }.bind(this)); };

以下是我们在测试当中发现的mocha测试集成错误:

给大家的小问题:

1.我们在哪套环境下进行测试?

2.我们该如何轻松对SQL服务器进行预测试与后测试?

3.这一切值得吗(就人力投入而言)?

解决任务的第三天:

继续处理Hologram NPM。昨天,我在代码中发现了很多模式,我决定尝试另一种架构策略,希望这能够增加API功能并有助于维护。

今天的新策略是配置源代码以支持Introspection。我首先建立了一套包含全部API方法及其HTTP属性的JSON数组。而后,我编写了一项“bootstrapping”方法,其能够利用该JSON建立实际代码。例如:

从这里开始:

{ name:"getAll", definition:"Get all devices in your account.", example:";apikey=123123", path:"/devices", category:"Device", method:"get", params: [ { name:"limit", type:"string", required: false, location:"querystring" }, { name:"startafter", type:"string", required: false, location:"querystring" } ] }

…而后: buildAPIWithConfig(json)

…实现以下能力:

HologramAPI.Device.getAll({ limit: 0 }) .then((devices) => { asser === 0, "No devices returned"); done(); })

该JSON可用于生成文档、方法参数类型反馈、测试以及测试模拟。例如,我可以这样运行:

generateDocs(json)

获得的结果为:

METHODHologram.Device.getAll({options}): Get all devices in your account and returns a Promise. Makes a raw GET request to /devices Example: ;apikey=123123

为什么?构建良好的README.md而后再配置!

面向用户的功能:

1. 用户能够获得全部API文档

2. 用户能够获得最新API文档

3. 维护人员无需更新JSDoc等标签

4. 维护人员能够立足该JSON生成测试并模拟数据

弊端:牺牲了灵活性……因为代码已经生成,因此当API返回的内容与标准模式不符时,很难再进行定制。


解决任务的第四天:

回顾路径选择流程的感觉不错,至少比编写代码和说明文档好多了。

这一天中的大部分时间用在添加JSON条目、为其编写Mocha测试、构建README.md生成模板、编写端点描述以及将README文档链入正式文档页面当中。节奏不错,再有一、两天就能将其正式开放了。

展示回顾结果!

接着,编写文档……

运行测试……


解决任务的第五天:

我打算弄点快速见效的东西。

第一步-在路由部分添加一些文档链接。我已经在其它位置放置有文档链接,所以直接粘贴即可。有些人将此称为样式优先级,我们应当将实现方式记录在uikit/kitchen-sink项目中。

第二步-将一个图标的源url配置为来自数据库而非硬编码。后端团队承诺在API调用响应中提供url字符串,所以我需要将其纳入现有配置。

完成!出人意料,这项工作挺费劲……我花了2个小时才搞定。刚开始基础变更并未起效。我开始比较理论与实际显示效果间的区别,快快速加以修复。另外,我们的CSS代码形式非常灵活,这让我相当头痛——可能我们稍后需要进行重写。暂时把这个加进待办清单吧,还有更重要的功能等着完成呢。

终于能在Phabricator的Done列中加入几项了。

接着,我在这里检查代码区别并进行提交。

好了,这就是我一周的工作日程,希望对大家有帮助~

【51CTO翻译稿件,合作站点转载请注明原文作者和出处为51CTO.com】

相关推荐