You can pass in an argument called data , which is a struct of dynamic data, to all life-cycle methods. This is useful when creating dynamic suites and specifications. This data will then be passed into the executing body for each life-cycle method for you.
beforeEach( data = { mydata="luis" },body=function( currentSpec, data ){// The arguments.data is binded via the `data` snapshot above.data.myData =="luis"; });
Here is a typical example:
describe( "Ability to bind data to life-cycle methods",function(){var data = ["spec1","spec2" ];for( var thisData in data ){describe( "Trying #thisData#",function(){beforeEach( data : { myData = thisData }, body : function( currentSpec, data ){ targetData = arguments.data.myData; });it( title : "should account for life-cycle data binding", data : { myData = thisData }, body : function( data ){expect( targetData ).toBe( data.mydata ); } );afterEach( data : { myData = thisData }, body : function( currentSpec, data ){ targetData = arguments.data.myData; }); }); }for( var thisData in data ){describe( "Trying around life-cycles with #thisData#",function(){aroundEach( data : { myData = thisData }, body : function( spec, suite, data ){ targetData = arguments.data.myData;arguments.spec.body( data=arguments.spec.data ); });it( title : "should account for life-cycle data binding", data : { myData = thisData }, body : function( data ){expect( targetData ).toBe( data.mydata ); }); }); }});