856 lines
18 KiB
HTML
856 lines
18 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
|
<meta name="generator" content="JsDoc Toolkit" />
|
|
|
|
<title>JsDoc Reference - jasmine.Spy</title>
|
|
|
|
<style type="text/css">
|
|
/* default.css */
|
|
body
|
|
{
|
|
font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
|
|
width: 800px;
|
|
}
|
|
|
|
.header
|
|
{
|
|
clear: both;
|
|
background-color: #ccc;
|
|
padding: 8px;
|
|
}
|
|
|
|
h1
|
|
{
|
|
font-size: 150%;
|
|
font-weight: bold;
|
|
padding: 0;
|
|
margin: 1em 0 0 .3em;
|
|
}
|
|
|
|
hr
|
|
{
|
|
border: none 0;
|
|
border-top: 1px solid #7F8FB1;
|
|
height: 1px;
|
|
}
|
|
|
|
pre.code
|
|
{
|
|
display: block;
|
|
padding: 8px;
|
|
border: 1px dashed #ccc;
|
|
}
|
|
|
|
#index
|
|
{
|
|
margin-top: 24px;
|
|
float: left;
|
|
width: 160px;
|
|
position: absolute;
|
|
left: 8px;
|
|
background-color: #F3F3F3;
|
|
padding: 8px;
|
|
}
|
|
|
|
#content
|
|
{
|
|
margin-left: 190px;
|
|
width: 600px;
|
|
}
|
|
|
|
.classList
|
|
{
|
|
list-style-type: none;
|
|
padding: 0;
|
|
margin: 0 0 0 8px;
|
|
font-family: arial, sans-serif;
|
|
font-size: 1em;
|
|
overflow: auto;
|
|
}
|
|
|
|
.classList li
|
|
{
|
|
padding: 0;
|
|
margin: 0 0 8px 0;
|
|
}
|
|
|
|
.summaryTable { width: 100%; }
|
|
|
|
h1.classTitle
|
|
{
|
|
font-size:170%;
|
|
line-height:130%;
|
|
}
|
|
|
|
h2 { font-size: 110%; }
|
|
caption, div.sectionTitle
|
|
{
|
|
background-color: #7F8FB1;
|
|
color: #fff;
|
|
font-size:130%;
|
|
text-align: left;
|
|
padding: 2px 6px 2px 6px;
|
|
border: 1px #7F8FB1 solid;
|
|
}
|
|
|
|
div.sectionTitle { margin-bottom: 8px; }
|
|
.summaryTable thead { display: none; }
|
|
|
|
.summaryTable td
|
|
{
|
|
vertical-align: top;
|
|
padding: 4px;
|
|
border-bottom: 1px #7F8FB1 solid;
|
|
border-right: 1px #7F8FB1 solid;
|
|
}
|
|
|
|
/*col#summaryAttributes {}*/
|
|
.summaryTable td.attributes
|
|
{
|
|
border-left: 1px #7F8FB1 solid;
|
|
width: 140px;
|
|
text-align: right;
|
|
}
|
|
|
|
td.attributes, .fixedFont
|
|
{
|
|
line-height: 15px;
|
|
color: #002EBE;
|
|
font-family: "Courier New",Courier,monospace;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.summaryTable td.nameDescription
|
|
{
|
|
text-align: left;
|
|
font-size: 13px;
|
|
line-height: 15px;
|
|
}
|
|
|
|
.summaryTable td.nameDescription, .description
|
|
{
|
|
line-height: 15px;
|
|
padding: 4px;
|
|
padding-left: 4px;
|
|
}
|
|
|
|
.summaryTable { margin-bottom: 8px; }
|
|
|
|
ul.inheritsList
|
|
{
|
|
list-style: square;
|
|
margin-left: 20px;
|
|
padding-left: 0;
|
|
}
|
|
|
|
.detailList {
|
|
margin-left: 20px;
|
|
line-height: 15px;
|
|
}
|
|
.detailList dt { margin-left: 20px; }
|
|
|
|
.detailList .heading
|
|
{
|
|
font-weight: bold;
|
|
padding-bottom: 6px;
|
|
margin-left: 0;
|
|
}
|
|
|
|
.light, td.attributes, .light a:link, .light a:visited
|
|
{
|
|
color: #777;
|
|
font-style: italic;
|
|
}
|
|
|
|
.fineprint
|
|
{
|
|
text-align: right;
|
|
font-size: 10px;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<!-- ============================== header ================================= -->
|
|
<!-- begin static/header.html -->
|
|
<div id="header">
|
|
</div>
|
|
<!-- end static/header.html -->
|
|
|
|
<!-- ============================== classes index ============================ -->
|
|
<div id="index">
|
|
<!-- begin publish.classesIndex -->
|
|
<div align="center"><a href="../index.html">Class Index</a>
|
|
| <a href="../files.html">File Index</a></div>
|
|
<hr />
|
|
<h2>Classes</h2>
|
|
<ul class="classList">
|
|
|
|
<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
|
|
|
|
<li><a href="../symbols/jasmine.html">jasmine</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.Block.html">jasmine.Block</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.Clock.html">jasmine.Clock</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.Env.html">jasmine.Env</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.JsApiReporter.html">jasmine.JsApiReporter</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.Matchers.html">jasmine.Matchers</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.MultiReporter.html">jasmine.MultiReporter</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.NestedResults.html">jasmine.NestedResults</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.Reporter.html">jasmine.Reporter</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.Runner.html">jasmine.Runner</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.Spec.html">jasmine.Spec</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.Spy.html">jasmine.Spy</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.Suite.html">jasmine.Suite</a></li>
|
|
|
|
<li><a href="../symbols/jasmine.util.html">jasmine.util</a></li>
|
|
|
|
</ul>
|
|
<hr />
|
|
<!-- end publish.classesIndex -->
|
|
</div>
|
|
|
|
<div id="content">
|
|
<!-- ============================== class title ============================ -->
|
|
<h1 class="classTitle">
|
|
|
|
Class jasmine.Spy
|
|
</h1>
|
|
|
|
<!-- ============================== class summary ========================== -->
|
|
<p class="description">
|
|
|
|
|
|
|
|
|
|
|
|
<br /><i>Defined in: </i> <a href="../symbols/src/src_base.js.html">base.js</a>.
|
|
|
|
</p>
|
|
|
|
<!-- ============================== constructor summary ==================== -->
|
|
|
|
<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class jasmine.Spy.">
|
|
<caption>Class Summary</caption>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">Constructor Attributes</th>
|
|
<th scope="col">Constructor Name and Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription" >
|
|
<div class="fixedFont">
|
|
<b><a href="../symbols/jasmine.Spy.html">jasmine.Spy</a></b>(name)
|
|
</div>
|
|
<div class="description">Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks.</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<!-- ============================== properties summary ===================== -->
|
|
|
|
|
|
|
|
<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class jasmine.Spy.">
|
|
<caption>Field Summary</caption>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">Field Attributes</th>
|
|
<th scope="col">Field Name and Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont">
|
|
<b><a href="../symbols/jasmine.Spy.html#argsForCall">argsForCall</a></b>
|
|
</div>
|
|
<div class="description">Holds arguments for each call to the spy, indexed by call count</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont">
|
|
<b><a href="../symbols/jasmine.Spy.html#identity">identity</a></b>
|
|
</div>
|
|
<div class="description">The name of the spy, if provided.</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont">
|
|
<b><a href="../symbols/jasmine.Spy.html#isSpy">isSpy</a></b>
|
|
</div>
|
|
<div class="description">Is this Object a spy?</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont">
|
|
<b><a href="../symbols/jasmine.Spy.html#mostRecentCall">mostRecentCall</a></b>
|
|
</div>
|
|
<div class="description">Tracking of the most recent call to the spy.</div>
|
|
</td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ============================== methods summary ======================== -->
|
|
|
|
|
|
|
|
<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class jasmine.Spy.">
|
|
<caption>Method Summary</caption>
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">Method Attributes</th>
|
|
<th scope="col">Method Name and Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont"><b><a href="../symbols/jasmine.Spy.html#andCallFake">andCallFake</a></b>(fakeFunc)
|
|
</div>
|
|
<div class="description">Calls an alternate implementation when a spy is called.</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont"><b><a href="../symbols/jasmine.Spy.html#andCallThrough">andCallThrough</a></b>()
|
|
</div>
|
|
<div class="description">Tells a spy to call through to the actual implemenatation.</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont"><b><a href="../symbols/jasmine.Spy.html#andReturn">andReturn</a></b>(value)
|
|
</div>
|
|
<div class="description">For setting the return value of a spy.</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont"><b><a href="../symbols/jasmine.Spy.html#andThrow">andThrow</a></b>(exceptionMsg)
|
|
</div>
|
|
<div class="description">For throwing an exception when a spy is called.</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont"><b><a href="../symbols/jasmine.Spy.html#plan">plan</a></b>()
|
|
</div>
|
|
<div class="description">The actual function this spy stubs.</div>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td class="attributes"> </td>
|
|
<td class="nameDescription">
|
|
<div class="fixedFont"><b><a href="../symbols/jasmine.Spy.html#reset">reset</a></b>()
|
|
</div>
|
|
<div class="description">Resets all of a spy's the tracking variables so that it can be used again.</div>
|
|
</td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<!-- ============================== events summary ======================== -->
|
|
|
|
|
|
<!-- ============================== constructor details ==================== -->
|
|
|
|
<div class="details"><a name="constructor"> </a>
|
|
<div class="sectionTitle">
|
|
Class Detail
|
|
</div>
|
|
|
|
<div class="fixedFont">
|
|
<b>jasmine.Spy</b>(name)
|
|
</div>
|
|
|
|
<div class="description">
|
|
Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks.
|
|
|
|
Spies should be created in test setup, before expectations. They can then be checked, using the standard Jasmine
|
|
expectation syntax. Spies can be checked if they were called or not and what the calling params were.
|
|
|
|
A Spy has the following mehtod: wasCalled, callCount, mostRecentCall, and argsForCall (see docs)
|
|
Spies are torn down at the end of every spec.
|
|
|
|
Note: Do <b>not</b> call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj.
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<pre class="code">// a stub
|
|
var myStub = jasmine.createSpy('myStub'); // can be used anywhere
|
|
|
|
// spy example
|
|
var foo = {
|
|
not: function(bool) { return !bool; }
|
|
}
|
|
|
|
// actual foo.not will not be called, execution stops
|
|
spyOn(foo, 'not');
|
|
|
|
// foo.not spied upon, execution will continue to implementation
|
|
spyOn(foo, 'not').andCallThrough();
|
|
|
|
// fake example
|
|
var foo = {
|
|
not: function(bool) { return !bool; }
|
|
}
|
|
|
|
// foo.not(val) will return val
|
|
spyOn(foo, 'not').andCallFake(function(value) {return value;});
|
|
|
|
// mock example
|
|
foo.not(7 == 7);
|
|
expect(foo.not).wasCalled();
|
|
expect(foo.not).wasCalledWith(true);</pre>
|
|
|
|
|
|
|
|
|
|
|
|
<dl class="detailList">
|
|
<dt class="heading">Parameters:</dt>
|
|
|
|
<dt>
|
|
<span class="light fixedFont">{String}</span> <b>name</b>
|
|
|
|
</dt>
|
|
<dd></dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<dl class="detailList">
|
|
<dt class="heading">See:</dt>
|
|
|
|
<dd><a href="../symbols/_global_.html#spyOn">spyOn</a>, jasmine.createSpy, jasmine.createSpyObj</dd>
|
|
|
|
</dl>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<!-- ============================== field details ========================== -->
|
|
|
|
<div class="sectionTitle">
|
|
Field Detail
|
|
</div>
|
|
|
|
<a name="argsForCall"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>argsForCall</b>
|
|
|
|
</div>
|
|
<div class="description">
|
|
Holds arguments for each call to the spy, indexed by call count
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<pre class="code">var mySpy = jasmine.createSpy('foo');
|
|
mySpy(1, 2);
|
|
mySpy(7, 8);
|
|
mySpy.mostRecentCall.args = [7, 8];
|
|
mySpy.argsForCall[0] = [1, 2];
|
|
mySpy.argsForCall[1] = [7, 8];</pre>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
<a name="identity"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>identity</b>
|
|
|
|
</div>
|
|
<div class="description">
|
|
The name of the spy, if provided.
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
<a name="isSpy"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>isSpy</b>
|
|
|
|
</div>
|
|
<div class="description">
|
|
Is this Object a spy?
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
<a name="mostRecentCall"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>mostRecentCall</b>
|
|
|
|
</div>
|
|
<div class="description">
|
|
Tracking of the most recent call to the spy.
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<pre class="code">var mySpy = jasmine.createSpy('foo');
|
|
mySpy(1, 2);
|
|
mySpy.mostRecentCall.args = [1, 2];</pre>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ============================== method details ========================= -->
|
|
|
|
<div class="sectionTitle">
|
|
Method Detail
|
|
</div>
|
|
|
|
<a name="andCallFake"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>andCallFake</b>(fakeFunc)
|
|
|
|
</div>
|
|
<div class="description">
|
|
Calls an alternate implementation when a spy is called.
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<pre class="code">var baz = function() {
|
|
// do some stuff, return something
|
|
}
|
|
// defining a spy from scratch: foo() calls the function baz
|
|
var foo = jasmine.createSpy('spy on foo').andCall(baz);
|
|
|
|
// defining a spy on an existing property: foo.bar() calls an anonymnous function
|
|
spyOn(foo, 'bar').andCall(function() { return 'baz';} );</pre>
|
|
|
|
|
|
|
|
|
|
<dl class="detailList">
|
|
<dt class="heading">Parameters:</dt>
|
|
|
|
<dt>
|
|
<span class="light fixedFont">{Function}</span> <b>fakeFunc</b>
|
|
|
|
</dt>
|
|
<dd></dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
<a name="andCallThrough"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>andCallThrough</b>()
|
|
|
|
</div>
|
|
<div class="description">
|
|
Tells a spy to call through to the actual implemenatation.
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<pre class="code">var foo = {
|
|
bar: function() { // do some stuff }
|
|
}
|
|
|
|
// defining a spy on an existing property: foo.bar
|
|
spyOn(foo, 'bar').andCallThrough();</pre>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
<a name="andReturn"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>andReturn</b>(value)
|
|
|
|
</div>
|
|
<div class="description">
|
|
For setting the return value of a spy.
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<pre class="code">// defining a spy from scratch: foo() returns 'baz'
|
|
var foo = jasmine.createSpy('spy on foo').andReturn('baz');
|
|
|
|
// defining a spy on an existing property: foo.bar() returns 'baz'
|
|
spyOn(foo, 'bar').andReturn('baz');</pre>
|
|
|
|
|
|
|
|
|
|
<dl class="detailList">
|
|
<dt class="heading">Parameters:</dt>
|
|
|
|
<dt>
|
|
<span class="light fixedFont">{Object}</span> <b>value</b>
|
|
|
|
</dt>
|
|
<dd></dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
<a name="andThrow"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>andThrow</b>(exceptionMsg)
|
|
|
|
</div>
|
|
<div class="description">
|
|
For throwing an exception when a spy is called.
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<pre class="code">// defining a spy from scratch: foo() throws an exception w/ message 'ouch'
|
|
var foo = jasmine.createSpy('spy on foo').andThrow('baz');
|
|
|
|
// defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch'
|
|
spyOn(foo, 'bar').andThrow('baz');</pre>
|
|
|
|
|
|
|
|
|
|
<dl class="detailList">
|
|
<dt class="heading">Parameters:</dt>
|
|
|
|
<dt>
|
|
<span class="light fixedFont">{String}</span> <b>exceptionMsg</b>
|
|
|
|
</dt>
|
|
<dd></dd>
|
|
|
|
</dl>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
<a name="plan"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>plan</b>()
|
|
|
|
</div>
|
|
<div class="description">
|
|
The actual function this spy stubs.
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
<a name="reset"> </a>
|
|
<div class="fixedFont">
|
|
|
|
|
|
<b>reset</b>()
|
|
|
|
</div>
|
|
<div class="description">
|
|
Resets all of a spy's the tracking variables so that it can be used again.
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<pre class="code">spyOn(foo, 'bar');
|
|
|
|
foo.bar();
|
|
|
|
expect(foo.bar.callCount).toEqual(1);
|
|
|
|
foo.bar.reset();
|
|
|
|
expect(foo.bar.callCount).toEqual(0);</pre>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- ============================== event details ========================= -->
|
|
|
|
|
|
<hr />
|
|
</div>
|
|
|
|
|
|
<!-- ============================== footer ================================= -->
|
|
<div class="fineprint" style="clear:both">
|
|
|
|
Documentation generated by <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a> 2.1.0 on Wed Dec 23 2009 21:27:32 GMT-0800 (PST)
|
|
</div>
|
|
</body>
|
|
</html>
|