Description
Samsui is a factory library for building PHP objects useful for setting up test data in your applications. It is mainly inspired by Rosie for JavaScript and factory_girl for Ruby.
Samsui alternatives and similar libraries
Based on the "Testing" category.
Alternatively, view Samsui alternatives based on common mentions on social networks and blogs.
-
Mockery
Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). -
VFS Stream
vfsStream is a stream wrapper for a virtual file system that may be helpful in unit tests to mock the real file system. It can be used with any unit test framework, like PHPUnit or SimpleTest. -
PHP-Mock: mocking built-in PHP functions
Mock built-in PHP functions (e.g. time(), exec() or rand())
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Samsui or a related project?
Popular Comparisons
README
Samsui
Samsui is a factory library for building PHP objects useful for setting up test data in your applications. It is mainly inspired by Rosie for JavaScript and factory_girl for Ruby.
Samsui women refers to a group of Chinese immigrants who came to Singapore to work in construction and industries. Their hardwork contributed to Singapore's development as a colony and young nation.
With Samsui, you can quickly build prototype application and generate as many data as you need for testing your prototype.
- Samsui was created by and maintained by Sam Yong.
- Samsui uses Travis CI to check that the code works.
- Samsui uses [Scrutinizer CI] to check code quality and test coverage.
- Samsui uses Composer to load and manage its dependencies.
- Samsui is licensed under the [BSD 3-Clause](license.md) license.
Installation
Samsui is a PHP library that manages its dependencies using Composer. You can directly use Samsui in your application through Composer:
{
"require": {
"mauris/samsui": "1.0.*"
}
}
Then just run Composer:
$ php composer.phar install
Usage
You can provide definition of your objects to Samsui:
use Samsui\Factory;
$factory = new Factory();
// define an object quickly
$factory->define('person')
->sequence('personId')
->attr('firstName', 'James')
->attr('lastName', 'Clark')
->attr('email', function ($i, $o) {
return strtolower($o->firstName . '.' . $o->lastName . '@example.com');
})
->attr('createdTime', function () {
return time();
});
You can build one at a time, or hundreds of them on the go!
// build them on the go!
$person = $factory->build('person');
// or build many!~
$people = $factory->build('person', 500);
The output of a person object would be (well, after JSON encoding):
{
"personId": "1",
"firstName": "James",
"lastName": "Clark",
"email": "[email protected]",
"createdTime": "1383465074"
}
You can also use Samsui's fake data generator to fill your objects with real variety and randomity:
use Samsui\Factory;
use Samsui\Generator\Generator;
$factory = new Factory();
// define an object quickly
$factory->define('person')
->sequence('personId')
->attr('firstName', Generator::person()->firstName)
->attr('lastName', Generator::person()->lastName)
->attr('email', function ($i, $o) {
return Generator::email()->emailAddress(
array(
'firstName' => $o->firstName,
'lastName' => $o->lastName,
'domains' => array(
'hotmail.com',
'gmail.com',
'example.com'
)
)
);
})
->attr('createdTime', function () {
return time();
});
Upcoming
- Generation of data based on locale (location+language)
- Implementation of Data Generators for use with attributes
- [ ] Names (different locale)
- [x] Email addresses
- [ ] Addresses and Postal Codes
- [x] Age (based on age groups defined)
- [x] Gender (with Natural Birth Ratio)
- [x] IP Address v4 and v6
- [x] URLs
- [x] Lorem Ipsum text
- [x] Date/Times (based on range or sequence)
- [x] Hash functions output (SHA-1, SHA-256 etc.)
- [x] GPS latitude / longitude, land coordiates
- [ ] Handphone numbers
- [x] Colors (RGB array, Hexadecimal)
- [ ] Images (Avatar, Sized)
- Improved JSON reader
- Generation of Factory definitions to PHP classes directly
*Note that all licence references and agreements mentioned in the Samsui README section above
are relevant to that project's source code only.