//npm i -S params-check --productionconstParamsCheck=require('params-check')//optional container to catch the error throw;constfuncContainer=ParamsCheck.funcContainer;// test adapter to check number of params send to functionconstadapter=(params,schema)=>{if(params.length==schema.numberOfParams){return{error:null}}return{error:'missing params!'}};// create instance with adapter for validationconstparamsCheck=newParamsCheck(adapter);// test functionconsttestFunc=(a,b,c)=>a+b+c;constvalidationRules={numberOfParams:3}// composition consttestedFunc=paramsCheck.withValidation(testFunc.name,validationRules,testFunc);test('to throw',()=>{letisThrow=false;//will throw error missing param, got 2 instead of 3;funcContainer(()=>testedFunc(1,2),(error)=>{console.log(error);isThrow=true;});expect(isThrow).toBe(true);});test('to pass',()=>{expect(testedFunc(1,2,3)).toBe(6);});