NPM Version

chai-js-factories adds support of js-factories to Chai. In essence, it’s a wrapper around the js-factories library and makes it available within the Chai namespace.


chai-js-factories is designed to work in most JavaScript environments, including Node and the browser.


Run npm install {--save-dev} chai-js-factories; then, to use:

var chai = require('chai');
var chaiJsFactories = require('chai-js-factories');


Include chai and js-factories per their respective readmes directions, then include chai-js-factories as a normal AMD module.

Note that unlike the other methods, you will need to explicitly initialize chai-js-factories with the chai-js-factories library:

require(['chai', 'js-factories', 'chai-js-factories'], function(chai, Factory, chaiJsFactories) {
  chai.use(function(chai, utils) {
    chaiJsFactories(Factory, chai, utils);

<script> tag

Include chai-js-factories.js after including chai andjs-factories:

<script src="chai.js" encoding="utf-8"></script>
<script src="js-factories.js" encoding="utf-8"></script>
<script src="chai-js-factories.js" encoding="utf-8"></script>


If you’re using Karma, check out the accompanying karma-chai-js-factories plugin.


Access to the js-factory library located on the chai.factory object:

chai.factory.define('testFactory', function (args) {
  return new Example(_.extend({foo: 'bar'}, args));

console.log(chai.factory.create('testFactory', {wom: 'bat'}));
console.log(chai.factory.create('testFactory', {foo: 'wombat'}));

This works as expected, overriding the default arguments when they are provided at creation time. For more documentation about factories, take a look at the js-factories documentation.