8

本文作者:Aman Mittal
编译:胡子大哈

翻译原文:http://huziketang.com/blog/posts/detail?postId=58ece6c1a58c240ae35bb8e4
英文连接:How to Mock Data for Node.js Applications using Faker.js

转载请注明出处,保留原文链接以及作者信息

当我们开发一个应用的时候,通常都不想耗过多的精力在数据上。创建数据库并且往数据库里塞用例数据这件事情,会使我很烦躁。我宁愿花更多的时间在 RESTful API 和如何构建前端应用上。

但是这并不是说我不在意数据库中数据的组织,对于数据的收集、整理有一个整体的规划还是很重要的。这方面工作完成以后,在你开发 API 的时候对于要解决什么问题和如何解决这个问题就变得非常清晰了。在我最近的工作中,我要创建一个客户端电子商务网站原型,我发现这种情况我以前也遇到过,我需要在截止日期之前,提交一个客户端所需要的尽可能检测完全的原型系统。在确定了我数据库结构以后,我查了一下解决方案,发现了一个针对 mock 数据非常好的解决方案:Faker.js

初识 Faker.js

这是一个很棒的 node 模块,用来 mock 数据。Faker 有自己的 API,而且功能非常丰富,这一切都要归功于发明它的人 Marak 。它几乎可以覆盖到任何你想用的用例,在 Github 上的文档也可以帮你分分钟熟悉它的用法

现在来看一下我需要用的测试用例——一个用户信息。

  • 姓名

  • email

  • 网站

  • 地址

  • 个性签名

  • 头像

    const faker = require('faker')
    
    const User = {
      name: faker.name.findName(),
      email: faker.internet.email(),
      website: faker.internet.url(),
      address: faker.address.streetAddress() + faker.address.city() + faker.address.country(),
      bio: faker.lorem.sentences(),
      image: faker.image.avatar()
    }
    
    module.exports = User

上图就是结果了,用 faker.js 很方便地可以 mock 数据,只需要添加 npm 依赖就行了:

npm install faker --save

Faker.js 数据

Faker.js 能产生的数据如下:

  • 地址

  • 商业信息

  • 公司

  • 日期

  • 金融

  • 黑客

  • 助手

  • 图片

  • 网络

  • 乱数假文

  • 名字

  • 电话

  • 随机数

  • 系统

上面每一个项目里面都有很多子项目,文档中有详细说明。

另外一个我很喜欢 Faker 的原因是,它不仅可以使用在服务端的 JavaScript,还可以应用在浏览器端 JavaScript。文档中的代码告诉你如何使用:

    <script src = "faker.js" type = "text/javascript"></script>
    <script>
      var randomName = faker.name.findName(); // Caitlyn Kerluke
      var randomEmail = faker.internet.email(); // Rusty@arne.info
      var randomCard = faker.helpers.createCard(); // random contact card containing many properties
    </script>

这些 API 可以很快地开发 JavaScript / Node.js 应用原型。不仅如此,在开发 RESTful API 的时候,还可以很容易地 mock TDD / BDD 测试。

完整的源代码,在这个 Github 库中可以看到。

如果本文对你有帮助,欢迎关注我的专栏-前端大哈,定期发布高质量前端文章。


我最近正在写一本《React.js 小书》,对 React.js 感兴趣的童鞋,欢迎指点


胡子大哈
1.7k 声望1.6k 粉丝

前百度高级工程师,知乎“前端大哈”专栏作者,全栈架构师。