UNPKG

siesta-lite

Version:

Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers

93 lines (73 loc) 2.75 kB
/* Siesta 5.6.1 Copyright(c) 2009-2022 Bryntum AB https://bryntum.com/contact https://bryntum.com/products/siesta/license */ /** @class Siesta.Test.Action.MethodCall @extends Siesta.Test.Action This action allows you to call any method of the test class. You can add it to the `chain` method by providing a property in the config object, which corresponds to some method of the test class. The value of this property should contain arguments for the method call (see {@link #args}). t.chain( function (next) { t.someMethodCall('arg1', 'arg2', next) }, // or { someMethodCall : [ 'arg1', 'arg2' ] }, ... { waitForSelector : '.selector' } ) */ Class('Siesta.Test.Action.MethodCall', { isa : Siesta.Test.Action, has : { /** * @cfg {String} methodName * * A name of the method to call. */ methodName : null, /** * @cfg {Array/Function/Object} args * * Arguments for the method call. Usually should be an array. * * If its a function, then the function will be called at the action execution time and result from the * action will be treated as `args`. The only exception is the "waitForFn" method, for which the supplied function * will be treated as the 1st argument for the "waitForFn" method. * * Anything else will be converted to a single element array. * * The callback will be added as the last argument (after resolving this config), unless the {@link #callbackIndex} is specified. */ args : null, /** * @cfg {Number} callbackIndex An index in the {@link #args} array where the callback should be inserted. */ callbackIndex : null }, methods : { process : function () { var test = this.test var methodName = this.methodName var args = this.args if (test.typeOf(args) == 'Function') args = args.call(test, this) if (test.typeOf(args) == 'Array') { args = args.slice(); } else { args = [ args ] } if (this.callbackIndex != null) args.splice(this.callbackIndex, 0, this.next) else args.push(this.next) test[ methodName ].apply(test, args) } } }); Siesta.Test.ActionRegistry().registerAction('methodCall', Siesta.Test.Action.MethodCall)