UNPKG

siesta-lite

Version:

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

1 lines 168 kB
Ext.data.JsonP.Siesta_Test({"tagname":"class","name":"Siesta.Test","autodetected":{},"files":[{"filename":"Test.js","href":"Test.html#Siesta-Test"}],"mixins":["Siesta.Test.BDD","Siesta.Test.Date","Siesta.Test.Function","Siesta.Test.More","Siesta.Util.Role.CanCompareObjects"],"members":[{"name":"isReadyTimeout","tagname":"cfg","owner":"Siesta.Test","id":"cfg-isReadyTimeout","meta":{}},{"name":"waitForTimeout","tagname":"cfg","owner":"Siesta.Test.More","id":"cfg-waitForTimeout","meta":{}},{"name":"url","tagname":"property","owner":"Siesta.Test","id":"property-url","meta":{}},{"name":"afterEach","tagname":"method","owner":"Siesta.Test.BDD","id":"method-afterEach","meta":{}},{"name":"any","tagname":"method","owner":"Siesta.Test.BDD","id":"method-any","meta":{}},{"name":"anyNumberApprox","tagname":"method","owner":"Siesta.Test.BDD","id":"method-anyNumberApprox","meta":{}},{"name":"anyStringLike","tagname":"method","owner":"Siesta.Test.BDD","id":"method-anyStringLike","meta":{}},{"name":"beforeEach","tagname":"method","owner":"Siesta.Test.BDD","id":"method-beforeEach","meta":{}},{"name":"beginAsync","tagname":"method","owner":"Siesta.Test","id":"method-beginAsync","meta":{}},{"name":"chain","tagname":"method","owner":"Siesta.Test.More","id":"method-chain","meta":{}},{"name":"chainForArray","tagname":"method","owner":"Siesta.Test.More","id":"method-chainForArray","meta":{}},{"name":"compareObjects","tagname":"method","owner":"Siesta.Util.Role.CanCompareObjects","id":"method-compareObjects","meta":{}},{"name":"createSpy","tagname":"method","owner":"Siesta.Test.BDD","id":"method-createSpy","meta":{}},{"name":"createSpyObj","tagname":"method","owner":"Siesta.Test.BDD","id":"method-createSpyObj","meta":{}},{"name":"ddescribe","tagname":"method","owner":"Siesta.Test.BDD","id":"method-ddescribe","meta":{}},{"name":"describe","tagname":"method","owner":"Siesta.Test.BDD","id":"method-describe","meta":{}},{"name":"diag","tagname":"method","owner":"Siesta.Test","id":"method-diag","meta":{}},{"name":"done","tagname":"method","owner":"Siesta.Test","id":"method-done","meta":{}},{"name":"earlySetup","tagname":"method","owner":"Siesta.Test","id":"method-earlySetup","meta":{}},{"name":"endAsync","tagname":"method","owner":"Siesta.Test","id":"method-endAsync","meta":{}},{"name":"exact","tagname":"method","owner":"Siesta.Test","id":"method-exact","meta":{}},{"name":"exit","tagname":"method","owner":"Siesta.Test","id":"method-exit","meta":{}},{"name":"expect","tagname":"method","owner":"Siesta.Test.BDD","id":"method-expect","meta":{}},{"name":"expectGlobals","tagname":"method","owner":"Siesta.Test.More","id":"method-expectGlobals","meta":{}},{"name":"fail","tagname":"method","owner":"Siesta.Test","id":"method-fail","meta":{}},{"name":"getSubTest","tagname":"method","owner":"Siesta.Test","id":"method-getSubTest","meta":{}},{"name":"iit","tagname":"method","owner":"Siesta.Test.BDD","id":"method-iit","meta":{}},{"name":"is","tagname":"method","owner":"Siesta.Test","id":"method-is","meta":{}},{"name":"isApprox","tagname":"method","owner":"Siesta.Test.More","id":"method-isApprox","meta":{}},{"name":"isArray","tagname":"method","owner":"Siesta.Test.More","id":"method-isArray","meta":{}},{"name":"isBoolean","tagname":"method","owner":"Siesta.Test.More","id":"method-isBoolean","meta":{}},{"name":"isCalled","tagname":"method","owner":"Siesta.Test.Function","id":"method-isCalled","meta":{}},{"name":"isCalledNTimes","tagname":"method","owner":"Siesta.Test.Function","id":"method-isCalledNTimes","meta":{}},{"name":"isCalledOnce","tagname":"method","owner":"Siesta.Test.Function","id":"method-isCalledOnce","meta":{}},{"name":"isDate","tagname":"method","owner":"Siesta.Test.More","id":"method-isDate","meta":{}},{"name":"isDateEqual","tagname":"method","owner":"Siesta.Test.Date","id":"method-isDateEqual","meta":{}},{"name":"isDeeply","tagname":"method","owner":"Siesta.Test.More","id":"method-isDeeply","meta":{}},{"name":"isDeeplyStrict","tagname":"method","owner":"Siesta.Test.More","id":"method-isDeeplyStrict","meta":{}},{"name":"isFunction","tagname":"method","owner":"Siesta.Test.More","id":"method-isFunction","meta":{}},{"name":"isGreater","tagname":"method","owner":"Siesta.Test.More","id":"method-isGreater","meta":{}},{"name":"isGreaterOrEqual","tagname":"method","owner":"Siesta.Test.More","id":"method-isGreaterOrEqual","meta":{}},{"name":"isInstanceOf","tagname":"method","owner":"Siesta.Test.More","id":"method-isInstanceOf","meta":{}},{"name":"isLess","tagname":"method","owner":"Siesta.Test.More","id":"method-isLess","meta":{}},{"name":"isLessOrEqual","tagname":"method","owner":"Siesta.Test.More","id":"method-isLessOrEqual","meta":{}},{"name":"isNot","tagname":"method","owner":"Siesta.Test","id":"method-isNot","meta":{}},{"name":"isNotStrict","tagname":"method","owner":"Siesta.Test","id":"method-isNotStrict","meta":{}},{"name":"isNumber","tagname":"method","owner":"Siesta.Test.More","id":"method-isNumber","meta":{}},{"name":"isObject","tagname":"method","owner":"Siesta.Test.More","id":"method-isObject","meta":{}},{"name":"isReady","tagname":"method","owner":"Siesta.Test","id":"method-isReady","meta":{}},{"name":"isRegExp","tagname":"method","owner":"Siesta.Test.More","id":"method-isRegExp","meta":{}},{"name":"isStrict","tagname":"method","owner":"Siesta.Test","id":"method-isStrict","meta":{}},{"name":"isString","tagname":"method","owner":"Siesta.Test.More","id":"method-isString","meta":{}},{"name":"isntCalled","tagname":"method","owner":"Siesta.Test.Function","id":"method-isntCalled","meta":{}},{"name":"it","tagname":"method","owner":"Siesta.Test.BDD","id":"method-it","meta":{}},{"name":"launchSubTest","tagname":"method","owner":"Siesta.Test","id":"method-launchSubTest","meta":{}},{"name":"like","tagname":"method","owner":"Siesta.Test.More","id":"method-like","meta":{}},{"name":"livesOk","tagname":"method","owner":"Siesta.Test.More","id":"method-livesOk","meta":{}},{"name":"methodIsCalled","tagname":"method","owner":"Siesta.Test.Function","id":"method-methodIsCalled","meta":{}},{"name":"methodIsCalledNTimes","tagname":"method","owner":"Siesta.Test.Function","id":"method-methodIsCalledNTimes","meta":{}},{"name":"methodIsntCalled","tagname":"method","owner":"Siesta.Test.Function","id":"method-methodIsntCalled","meta":{}},{"name":"notOk","tagname":"method","owner":"Siesta.Test","id":"method-notOk","meta":{}},{"name":"ok","tagname":"method","owner":"Siesta.Test","id":"method-ok","meta":{}},{"name":"pass","tagname":"method","owner":"Siesta.Test","id":"method-pass","meta":{}},{"name":"setup","tagname":"method","owner":"Siesta.Test","id":"method-setup","meta":{}},{"name":"snooze","tagname":"method","owner":"Siesta.Test","id":"method-snooze","meta":{}},{"name":"spyOn","tagname":"method","owner":"Siesta.Test.BDD","id":"method-spyOn","meta":{}},{"name":"subTest","tagname":"method","owner":"Siesta.Test","id":"method-subTest","meta":{}},{"name":"tearDown","tagname":"method","owner":"Siesta.Test","id":"method-tearDown","meta":{}},{"name":"throwsOk","tagname":"method","owner":"Siesta.Test.More","id":"method-throwsOk","meta":{}},{"name":"todo","tagname":"method","owner":"Siesta.Test","id":"method-todo","meta":{}},{"name":"unlike","tagname":"method","owner":"Siesta.Test.More","id":"method-unlike","meta":{}},{"name":"verifyGlobals","tagname":"method","owner":"Siesta.Test.More","id":"method-verifyGlobals","meta":{}},{"name":"waitFor","tagname":"method","owner":"Siesta.Test.More","id":"method-waitFor","meta":{}},{"name":"waitForFn","tagname":"method","owner":"Siesta.Test.More","id":"method-waitForFn","meta":{}},{"name":"waitForMs","tagname":"method","owner":"Siesta.Test.More","id":"method-waitForMs","meta":{}},{"name":"xdescribe","tagname":"method","owner":"Siesta.Test.BDD","id":"method-xdescribe","meta":{}},{"name":"xit","tagname":"method","owner":"Siesta.Test.BDD","id":"method-xit","meta":{}},{"name":"beforetestfinalize","tagname":"event","owner":"Siesta.Test","id":"event-beforetestfinalize","meta":{}},{"name":"testfailedwithexception","tagname":"event","owner":"Siesta.Test","id":"event-testfailedwithexception","meta":{}},{"name":"testfinalize","tagname":"event","owner":"Siesta.Test","id":"event-testfinalize","meta":{}},{"name":"teststart","tagname":"event","owner":"Siesta.Test","id":"event-teststart","meta":{}},{"name":"testupdate","tagname":"event","owner":"Siesta.Test","id":"event-testupdate","meta":{}}],"alternateClassNames":[],"aliases":{},"id":"class-Siesta.Test","short_doc":"Siesta.Test is a base testing class in Siesta hierarchy. ...","component":false,"superclasses":[],"subclasses":["Siesta.Test.Browser","Siesta.Test.NodeJS"],"mixedInto":[],"parentMixins":[],"requires":[],"uses":[],"html":"<div><pre class=\"hierarchy\"><h4>Mixins</h4><div class='dependency'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='docClass'>Siesta.Test.BDD</a></div><div class='dependency'><a href='#!/api/Siesta.Test.Date' rel='Siesta.Test.Date' class='docClass'>Siesta.Test.Date</a></div><div class='dependency'><a href='#!/api/Siesta.Test.Function' rel='Siesta.Test.Function' class='docClass'>Siesta.Test.Function</a></div><div class='dependency'><a href='#!/api/Siesta.Test.More' rel='Siesta.Test.More' class='docClass'>Siesta.Test.More</a></div><div class='dependency'><a href='#!/api/Siesta.Util.Role.CanCompareObjects' rel='Siesta.Util.Role.CanCompareObjects' class='docClass'>Siesta.Util.Role.CanCompareObjects</a></div><h4>Subclasses</h4><div class='dependency'><a href='#!/api/Siesta.Test.Browser' rel='Siesta.Test.Browser' class='docClass'>Siesta.Test.Browser</a></div><div class='dependency'><a href='#!/api/Siesta.Test.NodeJS' rel='Siesta.Test.NodeJS' class='docClass'>Siesta.Test.NodeJS</a></div><h4>Files</h4><div class='dependency'><a href='source/Test.html#Siesta-Test' target='_blank'>Test.js</a></div></pre><div class='doc-contents'><p><code><a href=\"#!/api/Siesta.Test\" rel=\"Siesta.Test\" class=\"docClass\">Siesta.Test</a></code> is a base testing class in Siesta hierarchy. It's not supposed to be created manually, instead the project will create it for you.</p>\n\n<p>This file is a reference only, for a getting start guide and manual please refer to the <a href=\"#!/guide/getting_started_browser\">Siesta getting started in browser environment</a> guide.</p>\n\n<h1>SYNOPSIS</h1>\n\n<pre><code>StartTest(function(t) {\n t.diag(\"Sanity\")\n\n t.ok($, 'jQuery is here')\n\n t.ok(Your.Project, 'My project is here')\n t.ok(Your.Project.Util, '.. indeed')\n\n setTimeout(function () {\n\n t.ok(true, \"True is ok\")\n\n }, 500)\n})\n</code></pre>\n</div><div class='members'><div class='members-section'><div class='definedBy'>Defined By</div><h3 class='members-title icon-cfg'>Config options</h3><div class='subsection'><div id='cfg-isReadyTimeout' class='member first-child not-inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><span class='defined-in' rel='Siesta.Test'>Siesta.Test</span><br/><a href='source/Test.html#Siesta-Test-cfg-isReadyTimeout' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test-cfg-isReadyTimeout' class='name expandable'>isReadyTimeout</a> : Number<span class=\"signature\"></span></div><div class='description'><div class='short'>Timeout in milliseconds to wait for test start. ...</div><div class='long'><p>Timeout in milliseconds to wait for test start. Default value is 10000. See also <a href=\"#!/api/Siesta.Test-method-isReady\" rel=\"Siesta.Test-method-isReady\" class=\"docClass\">isReady</a></p>\n<p>Defaults to: <code>10000</code></p></div></div></div><div id='cfg-waitForTimeout' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.More' rel='Siesta.Test.More' class='defined-in docClass'>Siesta.Test.More</a><br/><a href='source/More.html#Siesta-Test-More-cfg-waitForTimeout' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.More-cfg-waitForTimeout' class='name expandable'>waitForTimeout</a> : Number<span class=\"signature\"></span></div><div class='description'><div class='short'>Default timeout for waitFor (in milliseconds). ...</div><div class='long'><p>Default timeout for <code>waitFor</code> (in milliseconds). Default value is 10000.</p>\n<p>Defaults to: <code>10000</code></p></div></div></div></div></div><div class='members-section'><div class='definedBy'>Defined By</div><h3 class='members-title icon-property'>Properties</h3><div class='subsection'><div id='property-url' class='member first-child not-inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><span class='defined-in' rel='Siesta.Test'>Siesta.Test</span><br/><a href='source/Test.html#Siesta-Test-property-url' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test-property-url' class='name expandable'>url</a> : Object<span class=\"signature\"></span></div><div class='description'><div class='short'>The url of this test, as given to the start method. ...</div><div class='long'><p>The url of this test, as given to the <a href=\"#!/api/Siesta.Project-method-start\" rel=\"Siesta.Project-method-start\" class=\"docClass\">start</a> method. All subtests of some top-level test shares the same url.</p>\n<p>Defaults to: <code>{required: true}</code></p></div></div></div></div></div><div class='members-section'><div class='definedBy'>Defined By</div><h3 class='members-title icon-method'>Methods</h3><div class='subsection'><div id='method-afterEach' class='member first-child inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='defined-in docClass'>Siesta.Test.BDD</a><br/><a href='source/BDD.html#Siesta-Test-BDD-method-afterEach' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.BDD-method-afterEach' class='name expandable'>afterEach</a>( <span class='pre'>code, isAsync</span> )<span class=\"signature\"></span></div><div class='description'><div class='short'>This method allows you to execute some \"setup\" code hook after every spec (\"it\" block) of the current test. ...</div><div class='long'><p>This method allows you to execute some \"setup\" code hook after every spec (\"it\" block) of the current test.\nSuch hooks are <strong>not</strong> executed for the \"describe\" blocks and sub-tests generated with\nthe <a href=\"#!/api/Siesta.Test-method-getSubTest\" rel=\"Siesta.Test-method-getSubTest\" class=\"docClass\">getSubTest</a> method.</p>\n\n<p>Note, that specs can be nested and all <code>afterEach</code> hooks are executed in order, starting from the most-nested one.</p>\n\n<p>The 1st argument of the hook function is always the test instance being launched.</p>\n\n<p>If the hook function is async (<code>async () =&gt; {}</code>) Siesta will \"await\" until it completes.</p>\n\n<p>If hook is declared with 2 arguments - it is supposed to be asynchronous (you can also force the asynchronous\nmode with the <code>isAsync</code> argument, see below). The completion callback will be provided as the 2nd argument for the hook.</p>\n\n<p>This method can be called several times, providing several \"hook\" functions.</p>\n\n<p>For example:</p>\n\n<pre><code>StartTest(function (t) {\n var baz = 0\n\n t.afterEach(function (t) {\n // the `t` instance here is the \"t\" instance from the \"it\" block below\n baz = 0\n })\n\n t.it(\"This feature should work\", function (t) {\n t.expect(myFunction(baz++)).toEqual('someResult')\n })\n})\n</code></pre>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>code</span> : Function<div class='sub-desc'><p>A function to execute after every spec</p>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>t</span> : <a href=\"#!/api/Siesta.Test\" rel=\"Siesta.Test\" class=\"docClass\">Siesta.Test</a><div class='sub-desc'><p>A test instance being completed</p>\n</div></li><li><span class='pre'>next</span> : Function<div class='sub-desc'><p>A callback to call when the <code>afterEach</code> method completes. This argument is only provided\nwhen hook function is declared with 2 arguments (or the <code>isAsync</code> argument is passed as <code>true</code>)</p>\n</div></li></ul></div></li><li><span class='pre'>isAsync</span> : Boolean<div class='sub-desc'><p>When passed as <code>true</code> this argument makes the <code>afterEach</code> method asynchronous. In this case,\nthe <code>code</code> function will receive an additional callback argument, which should be called once the method has completed its work.</p>\n\n<p>Note, that <code>afterEach</code> method should complete within defaultTimeout time, otherwise\nfailing assertion will be added to the test.</p>\n\n<p>Example of asynchronous hook:</p>\n\n<pre><code>StartTest(function (t) {\n var baz = 0\n var delay = (time) =&gt; new Promise(resolve =&gt; setTimeout(resolve, time))\n\n // asynchronous hook function\n t.beforeEach(async t =&gt; {\n await delay(100)\n baz = 0\n })\n\n // asynchronous setup code\n t.afterEach(function (t, next) {\n\n // `afterEach` will complete in 100ms\n setTimeout(function () {\n baz = 0\n next()\n }, 100)\n })\n\n t.describe(\"This feature should work\", function (t) {\n t.expect(myFunction(baz++)).toEqual('someResult')\n })\n})\n</code></pre>\n</div></li></ul></div></div></div><div id='method-any' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='defined-in docClass'>Siesta.Test.BDD</a><br/><a href='source/BDD.html#Siesta-Test-BDD-method-any' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.BDD-method-any' class='name expandable'>any</a>( <span class='pre'>clsConstructor</span> ) : Object<span class=\"signature\"></span></div><div class='description'><div class='short'>This method returns a placeholder, denoting any instance of the provided class constructor. ...</div><div class='long'><p>This method returns a <em>placeholder</em>, denoting any instance of the provided class constructor. Such placeholder can be used in various\ncomparison assertions, like is, isDeeply, <a href=\"#!/api/Siesta.Test.BDD.Expectation-method-toBe\" rel=\"Siesta.Test.BDD.Expectation-method-toBe\" class=\"docClass\">expect().toBe()</a>,\n<a href=\"#!/api/Siesta.Test.BDD.Expectation-method-toBe\" rel=\"Siesta.Test.BDD.Expectation-method-toBe\" class=\"docClass\">expect().toEqual()</a> and so on.</p>\n\n<p>For example:</p>\n\n<pre><code>t.is(1, t.any(Number))\n\nt.expect(1).toBe(t.any(Number))\n\nt.isDeeply({ name : 'John', age : 45 }, { name : 'John', age : t.any(Number))\n\nt.expect({ name : 'John', age : 45 }).toEqual({ name : 'John', age : t.any(Number))\n\nt.is(NaN, t.any(), 'When class constructor is not provided `t.any()` should match anything')\n</code></pre>\n\n<p>See also <a href=\"#!/api/Siesta.Test.BDD-method-anyNumberApprox\" rel=\"Siesta.Test.BDD-method-anyNumberApprox\" class=\"docClass\">anyNumberApprox</a>, <a href=\"#!/api/Siesta.Test.BDD-method-anyStringLike\" rel=\"Siesta.Test.BDD-method-anyStringLike\" class=\"docClass\">anyStringLike</a>.</p>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>clsConstructor</span> : Function<div class='sub-desc'><p>A class constructor instances of which are denoted with this placeholder. As a special case if this argument\nis not provided, a placeholder will match any value.</p>\n</div></li></ul><h3 class='pa'>Returns</h3><ul><li><span class='pre'>Object</span><div class='sub-desc'><p>A placeholder object</p>\n</div></li></ul></div></div></div><div id='method-anyNumberApprox' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='defined-in docClass'>Siesta.Test.BDD</a><br/><a href='source/BDD.html#Siesta-Test-BDD-method-anyNumberApprox' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.BDD-method-anyNumberApprox' class='name expandable'>anyNumberApprox</a>( <span class='pre'>value, [threshold]</span> ) : Object<span class=\"signature\"></span></div><div class='description'><div class='short'>This method returns a placeholder, denoting any number approximately equal to the provided value. ...</div><div class='long'><p>This method returns a <em>placeholder</em>, denoting any number approximately equal to the provided value.\nSuch placeholder can be used in various comparison assertions, like is, isDeeply,\n<a href=\"#!/api/Siesta.Test.BDD.Expectation-method-toBe\" rel=\"Siesta.Test.BDD.Expectation-method-toBe\" class=\"docClass\">expect().toBe()</a>,\n<a href=\"#!/api/Siesta.Test.BDD.Expectation-method-toBe\" rel=\"Siesta.Test.BDD.Expectation-method-toBe\" class=\"docClass\">expect().toEqual()</a> and so on.</p>\n\n<p>For example:</p>\n\n<pre><code>t.is(1, t.anyNumberApprox(1.2, 0.5))\n\nt.expect(1).toBe(t.anyNumberApprox(1.2, 0.5))\n</code></pre>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>value</span> : Number<div class='sub-desc'><p>The approximate value</p>\n</div></li><li><span class='pre'>threshold</span> : Number (optional)<div class='sub-desc'><p>The threshold. If omitted, it is set to 5% from the <code>value</code>.</p>\n</div></li></ul><h3 class='pa'>Returns</h3><ul><li><span class='pre'>Object</span><div class='sub-desc'><p>A placeholder object</p>\n</div></li></ul></div></div></div><div id='method-anyStringLike' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='defined-in docClass'>Siesta.Test.BDD</a><br/><a href='source/BDD.html#Siesta-Test-BDD-method-anyStringLike' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.BDD-method-anyStringLike' class='name expandable'>anyStringLike</a>( <span class='pre'>value</span> ) : Object<span class=\"signature\"></span></div><div class='description'><div class='short'>This method returns a placeholder, denoting any string that matches provided value. ...</div><div class='long'><p>This method returns a <em>placeholder</em>, denoting any string that matches provided value.\nSuch placeholder can be used in various comparison assertions, like is, isDeeply,\n<a href=\"#!/api/Siesta.Test.BDD.Expectation-method-toBe\" rel=\"Siesta.Test.BDD.Expectation-method-toBe\" class=\"docClass\">expect().toBe()</a>,\n<a href=\"#!/api/Siesta.Test.BDD.Expectation-method-toBe\" rel=\"Siesta.Test.BDD.Expectation-method-toBe\" class=\"docClass\">expect().toEqual()</a> and so on.</p>\n\n<p>For example:</p>\n\n<pre><code>t.is('foo', t.anyStringLike('oo'))\n\nt.expect('bar').toBe(t.anyStringLike(/ar$/))\n</code></pre>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>value</span> : String/RegExp<div class='sub-desc'><p>If given as string will denote a substring a string being checked should contain,\nif given as RegExp instance then string being checked should match this RegExp</p>\n</div></li></ul><h3 class='pa'>Returns</h3><ul><li><span class='pre'>Object</span><div class='sub-desc'><p>A placeholder object</p>\n</div></li></ul></div></div></div><div id='method-beforeEach' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='defined-in docClass'>Siesta.Test.BDD</a><br/><a href='source/BDD.html#Siesta-Test-BDD-method-beforeEach' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.BDD-method-beforeEach' class='name expandable'>beforeEach</a>( <span class='pre'>code, isAsync</span> )<span class=\"signature\"></span></div><div class='description'><div class='short'>This method allows you to execute some \"setup\" code hook before every spec (\"it\" block) of the current test. ...</div><div class='long'><p>This method allows you to execute some \"setup\" code hook before every spec (\"it\" block) of the current test.\nSuch hooks are <strong>not</strong> executed for the \"describe\" blocks and sub-tests generated with\nthe <a href=\"#!/api/Siesta.Test-method-getSubTest\" rel=\"Siesta.Test-method-getSubTest\" class=\"docClass\">getSubTest</a> method.</p>\n\n<p>Note, that specs can be nested and all <code>beforeEach</code> hooks are executed in order, starting from the outer-most one.</p>\n\n<p>The 1st argument of the hook function is always the test instance being launched.</p>\n\n<p>If the hook function is async (<code>async () =&gt; {}</code>) Siesta will \"await\" until it completes.</p>\n\n<p>If hook is declared with 2 arguments - it is supposed to be asynchronous (you can also force the asynchronous\nmode with the <code>isAsync</code> argument, see below). The completion callback will be provided as the 2nd argument for the hook.</p>\n\n<p>This method can be called several times, providing several \"hook\" functions.</p>\n\n<p>For example:</p>\n\n<pre><code>StartTest(function (t) {\n var baz = 0\n\n t.beforeEach(function (t) {\n // the `t` instance here is the \"t\" instance from the \"it\" block below\n baz = 0\n })\n\n t.it(\"This feature should work\", function (t) {\n t.expect(myFunction(baz++)).toEqual('someResult')\n })\n})\n</code></pre>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>code</span> : Function<div class='sub-desc'><p>A function to execute before every spec</p>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>t</span> : <a href=\"#!/api/Siesta.Test\" rel=\"Siesta.Test\" class=\"docClass\">Siesta.Test</a><div class='sub-desc'><p>A test instance being launched</p>\n</div></li><li><span class='pre'>next</span> : Function<div class='sub-desc'><p>A callback to call when the <code>beforeEach</code> method completes. This argument is only provided\nwhen hook function is declared with 2 arguments (or the <code>isAsync</code> argument is passed as <code>true</code>)</p>\n</div></li></ul></div></li><li><span class='pre'>isAsync</span> : Boolean<div class='sub-desc'><p>When passed as <code>true</code> this argument makes the <code>beforeEach</code> method asynchronous. In this case,\nthe <code>code</code> function will receive an additional callback argument, which should be called once the method has completed its work.</p>\n\n<p>Note, that <code>beforeEach</code> method should complete within defaultTimeout time, otherwise\nfailing assertion will be added to the test.</p>\n\n<p>Example of asynchronous hook:</p>\n\n<pre><code>StartTest(function (t) {\n var baz = 0\n var delay = (time) =&gt; new Promise(resolve =&gt; setTimeout(resolve, time))\n\n // asynchronous hook function\n t.beforeEach(async t =&gt; {\n await delay(100)\n baz = 0\n })\n\n // asynchronous setup code\n t.beforeEach(function (t, next) {\n\n // `beforeEach` will complete in 100ms\n setTimeout(function () {\n baz = 0\n next()\n }, 100)\n })\n\n t.describe(\"This feature should work\", function (t) {\n t.expect(myFunction(baz++)).toEqual('someResult')\n })\n})\n</code></pre>\n</div></li></ul></div></div></div><div id='method-beginAsync' class='member not-inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><span class='defined-in' rel='Siesta.Test'>Siesta.Test</span><br/><a href='source/Test.html#Siesta-Test-method-beginAsync' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test-method-beginAsync' class='name expandable'>beginAsync</a>( <span class='pre'>time, errback</span> ) : Object<span class=\"signature\"></span></div><div class='description'><div class='short'>This method starts the \"asynchronous frame\". ...</div><div class='long'><p>This method starts the \"asynchronous frame\". The test will wait for all asynchronous frames to complete before it will finalize.\nThe frame should be finished with the <a href=\"#!/api/Siesta.Test-method-endAsync\" rel=\"Siesta.Test-method-endAsync\" class=\"docClass\">endAsync</a> call within the provided <code>time</code>, otherwise a failure will be reported.</p>\n\n<p>For example:</p>\n\n<pre><code> var async = t.beginAsync()\n\n Ext.require('Some.Class', function () {\n\n t.ok(Some.Class, 'Some class was loaded')\n\n t.endAsync(async)\n })\n</code></pre>\n\n<p>Additionally, if you return a <code>Promise</code> instance from the test function itself, Siesta will wait until that promise is resolved before finalizing the test.\nIn modern browsers, this allows us to use <code>async/await</code> functions:</p>\n\n<pre><code> StartTest(t =&gt; {\n let someAsyncOperation = () =&gt; new Promise((resolve, reject) =&gt; {\n setTimeout(() =&gt; resolve(true), 1000)\n })\n\n t.it('Doing async stuff', async t =&gt; {\n let res = await someAsyncOperation()\n\n t.ok(res, \"Async stuff finished correctly\")\n })\n})\n</code></pre>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>time</span> : Number<div class='sub-desc'><p>The maximum time (in ms) to wait until force the finalization of this async frame. Optional. Default time is 15000 ms.</p>\n</div></li><li><span class='pre'>errback</span> : Function<div class='sub-desc'><p>Optional. The function to call in case the call to <a href=\"#!/api/Siesta.Test-method-endAsync\" rel=\"Siesta.Test-method-endAsync\" class=\"docClass\">endAsync</a> was not detected withing <code>time</code>. If function\nwill return any \"truthy\" value, the failure will not be reported (you can report own failure with this errback).</p>\n</div></li></ul><h3 class='pa'>Returns</h3><ul><li><span class='pre'>Object</span><div class='sub-desc'><p>The frame object, which can be used in <a href=\"#!/api/Siesta.Test-method-endAsync\" rel=\"Siesta.Test-method-endAsync\" class=\"docClass\">endAsync</a> call</p>\n</div></li></ul><h3 class='pa'>Fires</h3><ul><li>maxtimeoutchanged</li></ul></div></div></div><div id='method-chain' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.More' rel='Siesta.Test.More' class='defined-in docClass'>Siesta.Test.More</a><br/><a href='source/More.html#Siesta-Test-More-method-chain' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.More-method-chain' class='name expandable'>chain</a>( <span class='pre'>step1, step2, stepN</span> )<span class=\"signature\"></span></div><div class='description'><div class='short'>This method accepts a variable number of steps, either as individual arguments or as a single array containing them. ...</div><div class='long'><p>This method accepts a variable number of steps, either as individual arguments or as a single array containing them. Steps and arrays\nof steps are handled just fine, and any step-arrays passed will be flattened. Each step should be either a function or configuration\nobject for <a href=\"#!/api/Siesta.Test.Action\" rel=\"Siesta.Test.Action\" class=\"docClass\">test actions</a>. These functions / actions will be executed in order.</p>\n\n<p>1) For a function step, it will receive a callback as the 1st argument, to call when the step is completed.\nAs the 2nd and further arguments, the step function will receive the arguments passed to the previous callback.</p>\n\n<p>If a function step returns a promise, it should not call the callback, but instead Siesta will wait until the promise returned is\nresolved / rejected. This plays nicely with the <code>async/await</code> functions:</p>\n\n<pre><code>let someAsyncOperation =\n t =&gt; new Promise((resolve, reject) =&gt; {\n setTimeout(() =&gt; { resolve(\"someValue\") }, 300)\n })\n\nt.it('Doing async stuff', t =&gt; {\n t.chain(\n // function step, that returns a promise (sugared with async/await)\n async () =&gt; {\n return await someAsyncOperation(t)\n },\n // desugared version\n function (next, result) {\n return someAsyncOperation(t)\n }\n )\n})\n</code></pre>\n\n<p>The last step will receive a no-op callback, which can be ignored or still called. <strong>Note</strong>, that last step is assumed to\ncomplete synchronously! If you need to launch some asynchronous process in the last step, you may need to add another empty function step\nto the end of the chain.</p>\n\n<p>2) For <code><a href=\"#!/api/Siesta.Test.Action\" rel=\"Siesta.Test.Action\" class=\"docClass\">Siesta.Test.Action</a></code> objects, the callback will be called by the action class automatically,\nthere's no need to provide any callback manually. The configuration object should contain an \"action\" property, specifying the action class\nalong with other config options depending on the action class. For brevity, instead of using the \"action\" property, the configuration\nobject can contain the property corresponding to the action name itself, with the action's target (or even a test method with arguments).\nSee the following examples and also refer to the documentation of the action classes.</p>\n\n<p>If the configuration object will contain a <code>desc</code> property, a passing assertion with its value will be added to the test, after this step has completed.</p>\n\n<p>3) If a step is a sub test instance, created with getSubTest method, then the step will launch it.</p>\n\n<p>It's better to see how it works in action. For example, when using using only functions:</p>\n\n<pre><code>t.chain(\n // function receives a callback as 1st argument\n function (next) {\n // we pass that callback to the \"click\" method\n t.click(buttonEl, next)\n },\n function (next) {\n t.type(fieldEl, 'Something', next)\n },\n function (next) {\n t.is(fieldEl.value == 'Something', 'Correct value in the field')\n\n // call the callback with some arguments\n next('foo', 'bar')\n },\n // those arguments are now available as arguments of next step\n function (next, value1, value2) {\n t.is(value1, 'foo', 'The arguments for the callback are translated to the arguments of the step')\n t.is(value2, 'bar', 'The arguments for the callback are translated to the arguments of the step')\n }\n)\n</code></pre>\n\n<p>The same example, using action configuration objects for first 2 steps. For the list of available actions\nplease refer to the classes in the <code><a href=\"#!/api/Siesta.Test.Action\" rel=\"Siesta.Test.Action\" class=\"docClass\">Siesta.Test.Action</a></code> namespace.</p>\n\n<pre><code>t.chain(\n {\n action : 'click',\n target : buttonEl,\n desc : \"Clicked on the button\"\n },\n // or\n {\n click : buttonEl,\n desc : \"Clicked on the button\"\n },\n\n {\n action : 'type',\n target : fieldEl,\n text : 'Something',\n desc : \"Typed in the field\"\n },\n // or\n {\n type : 'Something',\n target : fieldEl,\n desc : \"Typed in the field\"\n },\n\n {\n waitFor : 'Selector',\n args : '.selector'\n }\n // or, using <a href=\"#!/api/Siesta.Test.Action.MethodCall\" rel=\"Siesta.Test.Action.MethodCall\" class=\"docClass\">Siesta.Test.Action.MethodCall</a> notation:\n {\n waitForSelector : '.selector'\n }\n\n function (next) {\n t.is(fieldEl.value == 'Something', 'Correct value in the field')\n\n next('foo', 'bar')\n },\n ...\n)\n</code></pre>\n\n<p>Please note, that by default, each step is expected to complete within the <a href=\"#!/api/Siesta.Project-cfg-defaultTimeout\" rel=\"Siesta.Project-cfg-defaultTimeout\" class=\"docClass\">Siesta.Project.defaultTimeout</a> time.\nYou can change this with the <code>timeout</code> property of the step configuration object, allowing some steps to last longer.\nSteps with sub-tests are expected to complete within <a href=\"#!/api/Siesta.Project-cfg-subTestTimeout\" rel=\"Siesta.Project-cfg-subTestTimeout\" class=\"docClass\">Siesta.Project.subTestTimeout</a>.</p>\n\n<p>In a special case, <code>action</code> property of the step configuration object can be a function. In this case you can also\nprovide a <code>timeout</code> property, otherwise this case is identical to using functions:</p>\n\n<pre><code>t.chain(\n {\n action : function (next) { ... },\n // allow 50s for the function to call \"next\" before step will be considered timed-out\n timeout : 50000\n },\n ...\n)\n</code></pre>\n\n<p> <strong>Tip</strong>:</p>\n\n<p> If a step is presented with a <code>null</code> or <code>undefined</code> value it will be ignored. Additionally, a step can be\n an array of steps - all arrays passed to t.chain will be flattened.</p>\n\n<p> These tips allows us to implement conditional steps processing, like this:</p>\n\n<pre><code>var el1IsInDom = t.$('.some-class1')[ 0 ]\nvar el2IsInDom = t.$('.some-class2')[ 0 ]\n\nt.chain(\n { click : '.some-other-el' },\n\n el1IsInDom ? [\n { click : el1IsInDom },\n\n el2IsInDom ? [\n { click : el1IsInDom }\n ] : null,\n ] : null,\n\n ...\n)\n</code></pre>\n\n<p> See also : <a href=\"#!/api/Siesta.Test.More-method-chainForArray\" rel=\"Siesta.Test.More-method-chainForArray\" class=\"docClass\">chainForArray</a>.</p>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>step1</span> : Function/Object/Array<div class='sub-desc'><p>The function to execute or action configuration, or an array of steps</p>\n</div></li><li><span class='pre'>step2</span> : Function/Object<div class='sub-desc'><p>The function to execute or action configuration</p>\n</div></li><li><span class='pre'>stepN</span> : Function/Object<div class='sub-desc'><p>The function to execute or action configuration</p>\n</div></li></ul><h3 class='pa'>Fires</h3><ul><li>maxtimeoutchanged</li></ul></div></div></div><div id='method-chainForArray' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.More' rel='Siesta.Test.More' class='defined-in docClass'>Siesta.Test.More</a><br/><a href='source/More.html#Siesta-Test-More-method-chainForArray' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.More-method-chainForArray' class='name expandable'>chainForArray</a>( <span class='pre'>array, generator, [callback]</span> )<span class=\"signature\"></span></div><div class='description'><div class='short'>This is a wrapper around the chain method, which allows you to run the chain over the steps, generated from the eleme...</div><div class='long'><p>This is a wrapper around the <a href=\"#!/api/Siesta.Test.More-method-chain\" rel=\"Siesta.Test.More-method-chain\" class=\"docClass\">chain</a> method, which allows you to run the chain over the steps, generated from the elements\nof some array. For example, if in some step of outer chain, we need to click the elements with ids, given as the array, we can do:</p>\n\n<pre><code>function (next) {\n var ids = [ 'button-1', 'button-2', 'button-3' ]\n\n t.chainForArray(ids, function (elId) {\n return { click : '#' + elId }\n }, next)\n}\n</code></pre>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>array</span> : Array<div class='sub-desc'><p>An array with arbitrary elements</p>\n</div></li><li><span class='pre'>generator</span> : Function<div class='sub-desc'><p>A function, which will be called for every element of the <code>array</code>. It should return\na chain step, generated from that element. This function can return an array of steps as well. If generator will return <code>null</code> or\n<code>undefined</code> nothing will be added to the chain.</p>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>el</span> : Function<div class='sub-desc'><p>An element of the <code>array</code></p>\n</div></li><li><span class='pre'>index</span> : Function<div class='sub-desc'><p>An index of the element</p>\n</div></li></ul></div></li><li><span class='pre'>callback</span> : Function (optional)<div class='sub-desc'><p>A function to call, once the chain is completed.</p>\n</div></li></ul><h3 class='pa'>Fires</h3><ul><li>maxtimeoutchanged</li></ul></div></div></div><div id='method-compareObjects' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Util.Role.CanCompareObjects' rel='Siesta.Util.Role.CanCompareObjects' class='defined-in docClass'>Siesta.Util.Role.CanCompareObjects</a><br/><a href='source/CanCompareObjects.html#Siesta-Util-Role-CanCompareObjects-method-compareObjects' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Util.Role.CanCompareObjects-method-compareObjects' class='name expandable'>compareObjects</a>( <span class='pre'>obj1, obj2, strict, onlyPrimitives, asObjects</span> ) : Boolean<span class=\"signature\"></span></div><div class='description'><div class='short'>This method performs a deep comparison of the passed JavaScript objects. ...</div><div class='long'><p>This method performs a deep comparison of the passed JavaScript objects. Objects must not contain cyclic references.\nSupported objects are: Object, Array, Function, RegExp, Date, Map (the latter only for keys of primitive values - strings, numbers and browser >= MS Edge).\nWhen comparing Maps, the order of insertion does not matter.</p>\n\n<p>You can use this method in your own assertions, since it does not create an actual assertion in the test results,\nbut rather just returns a boolean value with comparison result.</p>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>obj1</span> : Mixed<div class='sub-desc'><p>The 1st object to compare</p>\n</div></li><li><span class='pre'>obj2</span> : Mixed<div class='sub-desc'><p>The 2nd object to compare</p>\n</div></li><li><span class='pre'>strict</span> : Boolean<div class='sub-desc'><p>When passed the <code>true</code> value, the comparison of the primitive values will be performed with the\n<code>===</code> operator (so [ 1 ] and [ \"1\" ] object will be different). Additionally, when this flag is set to <code>true</code>, then\nwhen comparing Function, RegExp and Date instances, additional check that objects contains the same set of own properties (\"hasOwnProperty\")\nwill be performed.</p>\n</div></li><li><span class='pre'>onlyPrimitives</span> : Boolean<div class='sub-desc'><p>When set to <code>true</code>, the function will not recurse into composite objects (like [] or {}) and will just report that\nobjects are different. Use this mode when you are only interested in comparison of primitive values (numbers, strings, etc).</p>\n</div></li><li><span class='pre'>asObjects</span> : Boolean<div class='sub-desc'><p>When set to <code>true</code>, the function will compare various special Object instances, like Functions, RegExp etc,\nby comparison of their properties only and not taking the anything else into account.</p>\n</div></li></ul><h3 class='pa'>Returns</h3><ul><li><span class='pre'>Boolean</span><div class='sub-desc'><p><code>true</code> if the passed objects are equal</p>\n</div></li></ul></div></div></div><div id='method-createSpy' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='defined-in docClass'>Siesta.Test.BDD</a><br/><a href='source/BDD.html#Siesta-Test-BDD-method-createSpy' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.BDD-method-createSpy' class='name expandable'>createSpy</a>( <span class='pre'>[spyName]</span> ) : Function<span class=\"signature\"></span></div><div class='description'><div class='short'>This method create a standalone spy function, which tracks all calls to it. ...</div><div class='long'><p>This method create a standalone spy function, which tracks all calls to it. Tracking is done using the associated\nspy instance, which is available as <code>and</code> property. One can use the <a href=\"#!/api/Siesta.Test.BDD.Spy\" rel=\"Siesta.Test.BDD.Spy\" class=\"docClass\">Siesta.Test.BDD.Spy</a> class API to\nverify the calls to the spy function.</p>\n\n<p>Example:</p>\n\n<pre><code>var spyFunc = t.createSpy('onadd listener')\n\nmyObservable.addEventListener('add', spyFunc)\n\n// do something that triggers the `add` event on the `myObservable`\n\nt.expect(spyFunc).toHaveBeenCalled()\n\nt.expect(spyFunc.calls.argsFor(1)).toEqual([ 'Arg1', 'Arg2' ])\n</code></pre>\n\n<p>See also: <a href=\"#!/api/Siesta.Test.BDD-method-spyOn\" rel=\"Siesta.Test.BDD-method-spyOn\" class=\"docClass\">spyOn</a></p>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>spyName</span> : String (optional)<div class='sub-desc'><p>A name of the spy for debugging purposes</p>\n<p>Defaults to: <code>&#39;James Bond&#39;</code></p></div></li></ul><h3 class='pa'>Returns</h3><ul><li><span class='pre'>Function</span><div class='sub-desc'><p>Created function. The associated spy instance is assigned to it as the <code>and</code> property</p>\n</div></li></ul></div></div></div><div id='method-createSpyObj' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='defined-in docClass'>Siesta.Test.BDD</a><br/><a href='source/BDD.html#Siesta-Test-BDD-method-createSpyObj' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.BDD-method-createSpyObj' class='name expandable'>createSpyObj</a>( <span class='pre'>spyName, properties</span> ) : Object<span class=\"signature\"></span></div><div class='description'><div class='short'>This method creates an object, which properties are spy functions. ...</div><div class='long'><p>This method creates an object, which properties are spy functions. Such object can later be used as a mockup.</p>\n\n<p>This method can be called with one argument only, which should be an array of properties.</p>\n\n<p>Example:</p>\n\n<pre><code>var mockup = t.createSpyObj('encoder-mockup', [ 'encode', 'decode' ])\n// or just\nvar mockup = t.createSpyObj([ 'encode', 'decode' ])\n\nmockup.encode('string')\nmockup.decode('string')\n\nt.expect(mockup.encode).toHaveBeenCalled()\n</code></pre>\n\n<p>See also: <a href=\"#!/api/Siesta.Test.BDD-method-createSpy\" rel=\"Siesta.Test.BDD-method-createSpy\" class=\"docClass\">createSpy</a></p>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>spyName</span> : String<div class='sub-desc'><p>A name of the spy object. Can be omitted.</p>\n</div></li><li><span class='pre'>properties</span> : Array[String]<div class='sub-desc'><p>An array of the property names. For each property name a spy function will be created.</p>\n</div></li></ul><h3 class='pa'>Returns</h3><ul><li><span class='pre'>Object</span><div class='sub-desc'><p>A mockup object</p>\n</div></li></ul></div></div></div><div id='method-ddescribe' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='defined-in docClass'>Siesta.Test.BDD</a><br/><a href='source/BDD.html#Siesta-Test-BDD-method-ddescribe' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.BDD-method-ddescribe' class='name expandable'>ddescribe</a>( <span class='pre'>name, code, [timeout]</span> )<span class=\"signature\"></span></div><div class='description'><div class='short'>This is an \"exclusive\" version of the regular describe suite. ...</div><div class='long'><p>This is an \"exclusive\" version of the regular <a href=\"#!/api/Siesta.Test.BDD-method-describe\" rel=\"Siesta.Test.BDD-method-describe\" class=\"docClass\">describe</a> suite. When such suites presents in some test file,\nthe other regular suites at the same level will not be executed, only \"exclusive\" ones.</p>\n<h3 class=\"pa\">Parameters</h3><ul><li><span class='pre'>name</span> : String<div class='sub-desc'><p>The name or description of the suite</p>\n</div></li><li><span class='pre'>code</span> : Function<div class='sub-desc'><p>The code function for this suite. It will receive a test instance as the first argument which should be used for all assertion methods.</p>\n</div></li><li><span class='pre'>timeout</span> : Number (optional)<div class='sub-desc'><p>A maximum duration for this suite. If not provided <a href=\"#!/api/Siesta.Project-cfg-subTestTimeout\" rel=\"Siesta.Project-cfg-subTestTimeout\" class=\"docClass\">Siesta.Project.subTestTimeout</a> value is used.</p>\n</div></li></ul></div></div></div><div id='method-describe' class='member inherited'><a href='#' class='side expandable'><span>&nbsp;</span></a><div class='title'><div class='meta'><a href='#!/api/Siesta.Test.BDD' rel='Siesta.Test.BDD' class='defined-in docClass'>Siesta.Test.BDD</a><br/><a href='source/BDD.html#Siesta-Test-BDD-method-describe' target='_blank' class='view-source'>view source</a></div><a href='#!/api/Siesta.Test.BDD-method-describe' class='name expandable'>describe</a>( <span class='pre'>name, code