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');
chai.use(chaiJsFactories);
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);
});
});
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'));
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.