[译]Dart假数据生成库faker

493 阅读1分钟

原文:faker | Dart Package (flutter-io.cn) 译时版本:2.1.0

faker

用于 Dart 生成假数据的库。

faker 受 Python 库 faker 和 Ruby 库 ffaker 的很大启发。

用法

一个简单示例:

import 'package:faker/faker.dart';

main() {
  var faker = new Faker();

  faker.internet.email();
  // francisco_lebsack@buckridge.com

  faker.internet.ipv6Address();
  // 2450:a5bf:7855:8ce9:3693:58db:50bf:a105

  faker.internet.userName();
  // fiona-ward

  faker.person.name();
  // Fiona Ward

  faker.person.prefix();
  // Mrs.

  faker.person.suffix();
  // Sr.
  
  faker.lorem.sentence();
  // Nec nam aliquam sem et
}

另外一个详细示例:

library faker.example;

import 'package:faker/faker.dart';

void main() {
  // final random = RandomGenerator(seed: 63833423);
  // final faker = Faker.withGenerator(random);

  // 生成一些不同类型的数据。
  print(faker.address.country());
  print(faker.company.name());
  print(faker.currency.code());
  print(faker.internet.ipv4Address());
  print(faker.job.title());
  print(faker.person.firstName());
  print(faker.sport.name());

  // 生成一个随机GEO(地理位置)。
  print(faker.geo.longitude());
  print(faker.geo.latitude());

  // 生成一个随机数量的 IP V4 地址(最多10个)
  print(random.amount((_) => faker.internet.ipv4Address(), 10));

  // 生成随机的布尔值
  print(random.boolean());

  // 生成随机小数。
  print(random.decimal());

  // 生成随机的日期时间,在 2000 年和 2020 年之间
  print(faker.date.dateTime(minYear: 2000, maxYear: 2020));

  // 生成随机的日期时间,在两个日期中间
  print(faker.date.dateTimeBetween(DateTime(2017, 9, 7), DateTime(2020, 9, 7)));

  // 生成随机的 User Agent ,带有 osName iOS
  print(faker.internet.userAgent(osName: 'iOS'));

  // 生成本地化的波斯语文本
  final fakerFa = Faker(provider: FakerDataProviderFa());
  print(fakerFa.lorem.word());
  print(fakerFa.lorem.sentence());
  print(fakerFa.lorem.words(10).join(' '));
  print(fakerFa.lorem.sentences(3).join(' '));

  // 生成 JWT(json web token)
  print(faker.jwt.valid());
  print(faker.jwt.valid(expiresIn: DateTime.now().add(Duration(hours: 2))));
  print(faker.jwt.expired());
  print(faker.jwt.custom(expiresIn: DateTime.now(), payload: {'key': 'value'}));
}

特性和BUG

如果有特性需求或者发现BUG,可在 issue 追踪 上提出。

版权

参考原文。