Git Product home page Git Product logo

xperiandri / genfu Goto Github PK

View Code? Open in Web Editor NEW

This project forked from misterjames/genfu

0.0 0.0 0.0 14.88 MB

GenFu is a library you can use to generate realistic test data. It is composed of several property fillers that can populate commonly named properties through reflection using an internal database of values or randomly created data. You can override any of the fillers, give GenFu hints on how to fill them.

License: Other

C# 69.97% PowerShell 0.21% HTML 4.34% Less 12.66% SCSS 12.83%

genfu's Introduction

GenFu

http://genfu.io/

Build status NuGet Badge

GenFu is a library you can use to generate realistic test data. It is composed of several property fillers that can populate commonly named properties through reflection using an internal database of values or randomly created data. You can override any of the fillers, give GenFu hints on how to fill them.

GenFu is all about smartly building up objects to use for test and prototype data. It will walk your object graph and fill in the properties on your type with realistic looking data.

Use GenFu's static methods to new up new objects for testing, design-time data or seeding a database.

GenFu runs on AspNetCore50 and can run anywhere core can run.

Installation

GenFu is on NuGet so you can easily add it to your project from the Package Manager Console:

install-package GenFu 

Example Usage

Let's say you have a Person class like so:

    class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Title { get; set; }
        public int Age { get; set; }
        public int NumberOfKids { get; set; }
		
		private string _middleName;
		public void SetMiddleName(string name){ _middleName = name; }
    }

And you want a new instance of Person. With GenFu, you just do this:

    var person = A.New<Person>();

Tada! Your person is now filled with all the data you could ever dream of!

But Wait!

"I don't need no stickin' person! I need a whole list of them!

Easy-peasy lemon squeezy, my friend! Ask for a list instead of a single instance like so:

    var people = A.ListOf<Person>();

There...you have 25 people, this is the default in a list.

"Yeah, sure, fine, but they have to be between the ages of 19 and 25!"

Cool beans, my brother or sister. Here's how GenFu rolls:


    GenFu.Configure<Person>()
        .Fill(p => p.Age)
        .WithinRange(19, 25);
    var people = A.ListOf<Person>();

And you're off to the races! Don't worry, I won't tell your boss how long that took. ;)

Custom Property Fillers

If you want to control how the property is set, you can use your own function (anonymous or otherwise) to do so.

    var blogTitle = "GenFu";

    GenFu.Configure<BlogPost>()
        .Fill(b => b.Title, () => { return blogTitle; })
    
    var post = A.New<BlogPost>();

Method Fillers

If your project uses one-parameter setter methods, you can use GenFu too!

    GenFu.Configure<Person>()
        .MethodFill<string>(x => x.SetMiddleName(null))
    var post = A.New<Person>();

You can use any of the helper methods with setter methods, just like with properties.

Note: Unlike properties, GenFu will not automatically poke data into any methods found. That sounds a little too risky! So if you want GenFu to use your setter methods, specify each method you'd like filled.

More To Come

GenFu was originally created by James Chambers, David Paquette and Simon Timms under the name AngelaSmith.

We are continuing to add more features, such as:

  • Better support for object self-awareness (think of an email address lining up with a first name/last name or username)
  • Additional property fillers

genfu's People

Contributors

misterjames avatar stimms avatar dpaquette avatar ajepst avatar edcharbeneau avatar clarkis117 avatar marcoregueira avatar xperiandri avatar erikschierboom avatar johnmeilleur avatar aidapsibr avatar dylanblack avatar edblackburn avatar gpltaylor avatar lmaslanka avatar sulmar avatar mklaber avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.