fake_model 0.0.8 copy "fake_model: ^0.0.8" to clipboard
fake_model: ^0.0.8 copied to clipboard

Automatically generate code for create fake model by annotating Dart classes.

Features #

Provides dart build system builder to generate fake model generation function for model class.

Annotation FakeModel and FakeConfig defined builder to find which model class you want to generate fake model generation function and generation configuration of field value.

  • To decide the model class you want to generate fake model generation function, you should annotate it with FakeModel.

  • To generate a class model field, you can annotate it with FakeConfig to config the value generation rule.

Install #

To use fake_model, it based on build_runner to generate codes, and based on annotation FakeModel and FakeConfig to find the model class and field value generation rule.

The project pubspec.yaml should add fake_model_annotation to dependencies, add build_runner and fake_model to dev_dependencies.

By command:

For Flutter project

flutter pub add fake_model_annotation
flutter pub add --dev build_runner
flutter pub add --dev fake_model

For Dart project

dart pub add fake_model_annotation
dart pub add --dev build_runner
dart pub add --dev fake_model

Or add to pubspec.yaml manually:

dependencies:
  fake_model_annotation:

dev_dependencies:
  build_runner:
  fake_model:

Usage #

More info see example.

fake_model based on annotation FakeModeland FakeConfig to find the model class and field value generation rule.

A model class you would like to generate fake model generation function by fake_model should add following code first:

import 'package:fake_model_annotation/fake_model_annotation.dart';

part '${YOUR_DART_FILE_NAME}.fake.dart';

Assume there has a model class Info written in info.dart with annotation FakeModel.

The fake model generation function naming format is _${CLASS NAME}FromFake().

In this example, fake model generation function should be named _$InfoFromFake();

import 'package:fake_model_annotation/fake_model_annotation.dart';

part 'info.fake.dart';

@FakeModel()
class Info {

  Info(this.age, this.name);

  final int age;
  final String name;

  /// Add named factory `fromFake` to connect the generated `fake model generation function` [_$InfoFromFake()].
  factory Info.fromFake() => _$InfoFromFake();
}

fake_model will generate a part code file was named info.fake.dart:

part of 'info.dart';


Info _$InfoFromFake() =>
    Info(
      intGenerator(minValue: 0, maxValue: 10000.0),
      stringGenerator('Info', 'name'),
    );

Generating code #

Same as other code generation package.

To generate code for Dart project, run below command in package folder.

cd $YOUR_PROJECT_ROOT_PATH

dart run build_runner build

To generate code for Flutter project, run below command in package folder.

cd $YOUR_PROJECT_ROOT_PATH

flutter pub run build_runner build

Field supported types #

bool, double, Enum, int, Iterable, List, Map, num, Object, Set, String

Default field value generation rules #

Following table shows the value generation rule for supported types. You can change the rule by annotate field with FakeConfig.

Type Rule
bool true / false
num random value, 0 - 10000
int random value, 0 - 10000
double random value, 0 - 10000
Enum randomly choose one of the types in the enum
String generate string by format '${class name}_${field name}_${generation count of this field}'
Iterable generate one item only
List generate one item only
Set generate one item only
Map generate one item only

Custom field value generation rule #

More info see example.

@FakeModel #

By default, the fake model generation function return fake model with difference value of field(s) called each time.

Set @FakeModel(randomValue: false) let builder to generates final variable for fake model generation function to return the fake model. To change the return value, run Generating code to let builder to generates code again.

See difference of fake model generation function shown below:

By default, @FakeModel(randomValue: true):

// field value was regenerated different values each time 
Info _$InfoFromFake() =>
    Info(
      age: 18,
      chanceOfRain: doubleGenerator(minValue: 50, maxValue: 100),
      friends: [
        stringGenerator('Info', 'friends'),
        stringGenerator('Info', 'friends'),
        stringGenerator('Info', 'friends')
      ],
    );

When @FakeModel(randomValue: false):

// always return final variable, the field value never change
final _fake_Info_model = Info(
  age: 18,
  chanceOfRain: 57.415846441589835,
  friends: ['Info_friends_1', 'Info_friends_2', 'Info_friends_3'],
);

Info _$InfoFromFake() => _fake_Info_model;

@FakeConfig #

To design the field generation rule, you can annotate field with FakeConfig.

import 'package:fake_model/fake_model.dart';

part 'info.fake.dart';

@FakeModel()
class Info {
  Info({required this.age, required this.chanceOfRain, required this.friends});

  /// age always 18
  @FakeConfig(defaultValue: 18)
  final int age;

  /// value between 50 to 100
  @FakeConfig(minValue: 50, maxValue: 100)
  final double chanceOfRain;

  /// Generate 10 item
  @FakeConfig(itemSize: 3)
  final List<String> friends;

  factory Info.fromFake() => _$InfoFromFake();
}

fake model generation function shown below:

Info _$InfoFromFake() =>
    Info(
      age: 18,
      chanceOfRain: doubleGenerator(minValue: 50, maxValue: 100),
      friends: [
        stringGenerator('Info', 'friends'),
        stringGenerator('Info', 'friends'),
        stringGenerator('Info', 'friends')
      ],
    );
3
likes
130
pub points
20%
popularity

Publisher

verified publisherzyzdev.dev

Automatically generate code for create fake model by annotating Dart classes.

Repository (GitHub)
View/report issues

Topics

#data-model #build-runner #codegen

Documentation

API reference

License

BSD-3-Clause (LICENSE)

Dependencies

analyzer, build, dart_style, fake_model_annotation, meta

More

Packages that depend on fake_model