tbob
tbob is a test data builder inspired in particular by Rosie.
However, at some point tbob evolved into a different direction. We needed it to do more than "just" create test data. In our particular workflow, factory definitions serve as reference model of our data structures. From this model we want to create other stuff, like mappings for Elasticsearch. We want to be able to express type constraints, and a way to attach arbitrary metadata to any document type or attribute. Rosie's factory inheritance is fine, but we wanted something more flexible. All this comes at the cost of added complexity.
If generating test data is your primary concern, you are almost certainly better of with Rosie.
Disclaimer: This is work in progress. Before releasing v1.0.0 we need to
-
Document the DSL and the CLI
-
finalize and document the scenario formats
-
Give some examples of
@meta
-Annotations, and how those can be used to create ElasticSearch Mappings and other cool stuff.
Usage
First, you need to tell tbob what kind of documents it should create. You do this by defining factories, using tbob's own DSL:
= ->@factory "TodoList"->@attr "owner"type ->@attr "name"type @stringfill "(owner name)"@attr "email"type @optional @string@attr "items"type @list @ref "TodoItem"fill done:true@factory "TodoItem"->@attr "id"type @numberfill ->@worlddocCount "TodoItem"@attr "title"type @stringfill "id""Title for item "@attr "done"type @booleanfill false
Next, you can run tbob like this
tbob -w examples/ '["TodoList"]'
it will create a json document populated with defaults:
Let's assume for your test case you need a todolist with some particular values in it. You only specify the values that are different from their respective defaults:
tbob -w examples/ '["TodoList", {"items":[{"title": "Find better examples"},{},{"done":true}]}]'
The result would be: