unexpected
Version:
Extensible BDD assertion toolkit
372 lines (306 loc) • 22.7 kB
HTML
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0">
<link rel="stylesheet" href="../../../static/normalize.css" type="text/css" media="screen" />
<link rel="stylesheet" href="../../../static/main.css" type="text/css" media="screen" />
<title>any - to satisfy</title>
</head>
<body class="sidebar-hidden has-sidebar">
<header>
<div class="logo-icon"></div>
<nav>
<ul>
<li class="menu-toggle-item">
<button class="menu-toggle" onclick="toggleSidebar()"></button>
</li>
<li class=""><a href="../../..">Unexpected</a></li>
<li class="active"><a href="../to-be-a">Assertions</a></li>
<li class=""><a href="../../../api/addAssertion">API</a></li>
</ul>
</nav>
</header>
<section id="assertions">
<nav id="assertion-menu" class="sidebar js-remember-scroll-position">
<ul>
<li>
<h3>any</h3>
<ul>
<li class="">
<a href="../to-be-a">to be a</a>
</li>
<li class="">
<a href="../to-be-falsy">to be falsy</a>
</li>
<li class="">
<a href="../to-be-null">to be null</a>
</li>
<li class="">
<a href="../to-be-truthy">to be truthy</a>
</li>
<li class="">
<a href="../to-be-ok">to be ok</a>
</li>
<li class="">
<a href="../to-be-undefined">to be undefined</a>
</li>
<li class="">
<a href="../to-be">to be</a>
</li>
<li class="">
<a href="../to-equal">to equal</a>
</li>
<li class="active">
<a href="">to satisfy</a>
</li>
<li class="">
<a href="../to-be-defined">to be defined</a>
</li>
</ul>
</li>
<li>
<h3>array</h3>
<ul>
<li class="">
<a href="../../array/to-be-an-array-whose-items-satisfy">to be an array whose items satisfy</a>
</li>
<li class="">
<a href="../../array/to-be-empty">to be empty</a>
</li>
<li class="">
<a href="../../array/to-contain">to contain</a>
</li>
<li class="">
<a href="../../array/to-have-length">to have length</a>
</li>
</ul>
</li>
<li>
<h3>boolean</h3>
<ul>
<li class="">
<a href="../../boolean/to-be-true">to be true</a>
</li>
<li class="">
<a href="../../boolean/to-be-false">to be false</a>
</li>
</ul>
</li>
<li>
<h3>function</h3>
<ul>
<li class="">
<a href="../../function/to-have-arity">to have arity</a>
</li>
<li class="">
<a href="../../function/to-throw">to throw</a>
</li>
</ul>
</li>
<li>
<h3>number</h3>
<ul>
<li class="">
<a href="../../number/to-be-infinite">to be infinite</a>
</li>
<li class="">
<a href="../../number/to-be-NaN">to be NaN</a>
</li>
<li class="">
<a href="../../number/to-be-finite">to be finite</a>
</li>
<li class="">
<a href="../../number/to-be-greater-than-or-equal-to">to be greater than or equal to</a>
</li>
<li class="">
<a href="../../number/to-be-greater-than">to be greater than</a>
</li>
<li class="">
<a href="../../number/to-be-close-to">to be close to</a>
</li>
<li class="">
<a href="../../number/to-be-less-than-or-equal-to">to be less than or equal to</a>
</li>
<li class="">
<a href="../../number/to-be-less-than">to be less than</a>
</li>
<li class="">
<a href="../../number/to-be-negative">to be negative</a>
</li>
<li class="">
<a href="../../number/to-be-positive">to be positive</a>
</li>
<li class="">
<a href="../../number/to-be-within">to be within</a>
</li>
</ul>
</li>
<li>
<h3>object</h3>
<ul>
<li class="">
<a href="../../object/to-have-properties">to have properties</a>
</li>
<li class="">
<a href="../../object/to-be-a-map-whose-keys-satisfy">to be a map whose keys satisfy</a>
</li>
<li class="">
<a href="../../object/to-be-a-map-whose-values-satisfy">to be a map whose values satisfy</a>
</li>
<li class="">
<a href="../../object/to-be-canonical">to be canonical</a>
</li>
<li class="">
<a href="../../object/to-have-key">to have key</a>
</li>
<li class="">
<a href="../../object/to-have-keys">to have keys</a>
</li>
<li class="">
<a href="../../object/to-have-property">to have property</a>
</li>
</ul>
</li>
<li>
<h3>string</h3>
<ul>
<li class="">
<a href="../../string/to-be-empty">to be empty</a>
</li>
<li class="">
<a href="../../string/to-be-greater-than-or-equal-to">to be greater than or equal to</a>
</li>
<li class="">
<a href="../../string/to-be-greater-than">to be greater than</a>
</li>
<li class="">
<a href="../../string/to-be-less-than-or-equal-to">to be less than or equal to</a>
</li>
<li class="">
<a href="../../string/to-be-less-than">to be less than</a>
</li>
<li class="">
<a href="../../string/to-be-within">to be within</a>
</li>
<li class="">
<a href="../../string/to-be">to be</a>
</li>
<li class="">
<a href="../../string/to-contain">to contain</a>
</li>
<li class="">
<a href="../../string/to-have-length">to have length</a>
</li>
<li class="">
<a href="../../string/to-match">to match</a>
</li>
</ul>
</li>
</ul>
</nav>
<div class="main">
<div class="content">
<p>Asserts that a value match a given specification.</p>
<p>All properties and nested objects mentioned in the right-hand side object are
required to be present. Primitive values are compared with <code>to equal</code> semantics:</p>
<div class="code lang-javascript">
<div><span style="color: #000000">expect</span><span style="color: #000000">({</span> hey<span style="color: #000000">:</span> <span style="color: #000000">{</span> there<span style="color: #000000">:</span> <span style="color: #0086b3">true</span> <span style="color: #000000">}</span> <span style="color: #000000">},</span> <span style="color: #df5000">'to satisfy'</span><span style="color: #000000">,</span> <span style="color: #000000">{</span> hey<span style="color: #000000">:</span> <span style="color: #000000">{}</span> <span style="color: #000000">});</span></div>
</div><p>To disallow additional properties in the subject, use <code>to exhaustively satisfy</code>:</p>
<div class="code lang-javascript">
<div><span style="color: #000000">expect</span><span style="color: #000000">({</span> hey<span style="color: #000000">:</span> <span style="color: #000000">{</span> there<span style="color: #000000">:</span> <span style="color: #0086b3">true</span> <span style="color: #000000">}</span> <span style="color: #000000">},</span> <span style="color: #df5000">'to exhaustively satisfy'</span><span style="color: #000000">,</span> <span style="color: #000000">{</span> hey<span style="color: #000000">:</span> <span style="color: #000000">{</span> there<span style="color: #000000">:</span> <span style="color: #0086b3">true</span> <span style="color: #000000">}</span> <span style="color: #000000">});</span></div>
</div><p>Regular expressions and functions in the right-hand side object will be run
against the corresponding values in the subject:</p>
<div class="code lang-javascript">
<div><span style="color: #000000">expect</span><span style="color: #000000">({</span> bar<span style="color: #000000">:</span> <span style="color: #df5000">'quux'</span><span style="color: #000000">,</span> baz<span style="color: #000000">:</span> <span style="color: #0086b3">true</span> <span style="color: #000000">},</span> <span style="color: #df5000">'to satisfy'</span><span style="color: #000000">,</span> <span style="color: #000000">{</span> bar<span style="color: #000000">:</span> <span style="color: #df5000">/QU*X/i</span> <span style="color: #000000">});</span></div>
</div><p>Can be combined with <code>expect.it</code> to create complex specifications that delegate to
existing assertions:</p>
<div class="code lang-javascript">
<div><span style="color: #000000">expect</span><span style="color: #000000">({</span>foo<span style="color: #000000">:</span> <span style="color: #0086b3">123</span><span style="color: #000000">,</span> bar<span style="color: #000000">:</span> <span style="color: #df5000">'bar'</span><span style="color: #000000">,</span> baz<span style="color: #000000">:</span> <span style="color: #df5000">'bogus'</span><span style="color: #000000">,</span> qux<span style="color: #000000">:</span> <span style="color: #0086b3">42</span><span style="color: #000000">},</span> <span style="color: #df5000">'to satisfy'</span><span style="color: #000000">,</span> <span style="color: #000000">{</span></div>
<div> foo<span style="color: #000000">:</span> expect<span style="color: #000000">.</span><span style="color: #000000">it</span><span style="color: #000000">(</span><span style="color: #df5000">'to be a number'</span><span style="color: #000000">).</span><span style="color: #000000">and</span><span style="color: #000000">(</span><span style="color: #df5000">'to be greater than'</span><span style="color: #000000">,</span> <span style="color: #0086b3">10</span><span style="color: #000000">),</span></div>
<div> baz<span style="color: #000000">:</span> expect<span style="color: #000000">.</span><span style="color: #000000">it</span><span style="color: #000000">(</span><span style="color: #df5000">'not to match'</span><span style="color: #000000">,</span> <span style="color: #df5000">/^boh/</span><span style="color: #000000">),</span></div>
<div> qux<span style="color: #000000">:</span> expect<span style="color: #000000">.</span><span style="color: #000000">it</span><span style="color: #000000">(</span><span style="color: #df5000">'to be a string'</span><span style="color: #000000">)</span></div>
<div> <span style="color: #000000">.</span><span style="color: #000000">and</span><span style="color: #000000">(</span><span style="color: #df5000">'not to be empty'</span><span style="color: #000000">)</span></div>
<div> <span style="color: #000000">.</span><span style="color: #000000">or</span><span style="color: #000000">(</span><span style="color: #df5000">'to be a number'</span><span style="color: #000000">)</span></div>
<div> <span style="color: #000000">.</span><span style="color: #000000">and</span><span style="color: #000000">(</span><span style="color: #df5000">'to be positive'</span><span style="color: #000000">)</span></div>
<div><span style="color: #000000">});</span></div>
</div><p>In case of a failing expectation you get the following output:</p>
<div class="code lang-javascript">
<div><span style="color: #000000">expect</span><span style="color: #000000">({</span>foo<span style="color: #000000">:</span> <span style="color: #0086b3">9</span><span style="color: #000000">,</span> bar<span style="color: #000000">:</span> <span style="color: #df5000">'bar'</span><span style="color: #000000">,</span> baz<span style="color: #000000">:</span> <span style="color: #df5000">'bogus'</span><span style="color: #000000">,</span> qux<span style="color: #000000">:</span> <span style="color: #0086b3">42</span><span style="color: #000000">},</span> <span style="color: #df5000">'to satisfy'</span><span style="color: #000000">,</span> <span style="color: #000000">{</span></div>
<div> foo<span style="color: #000000">:</span> expect<span style="color: #000000">.</span><span style="color: #000000">it</span><span style="color: #000000">(</span><span style="color: #df5000">'to be a number'</span><span style="color: #000000">).</span><span style="color: #000000">and</span><span style="color: #000000">(</span><span style="color: #df5000">'to be greater than'</span><span style="color: #000000">,</span> <span style="color: #0086b3">10</span><span style="color: #000000">),</span></div>
<div> baz<span style="color: #000000">:</span> expect<span style="color: #000000">.</span><span style="color: #000000">it</span><span style="color: #000000">(</span><span style="color: #df5000">'not to match'</span><span style="color: #000000">,</span> <span style="color: #df5000">/^bog/</span><span style="color: #000000">),</span></div>
<div> qux<span style="color: #000000">:</span> expect<span style="color: #000000">.</span><span style="color: #000000">it</span><span style="color: #000000">(</span><span style="color: #df5000">'to be a string'</span><span style="color: #000000">)</span></div>
<div> <span style="color: #000000">.</span><span style="color: #000000">and</span><span style="color: #000000">(</span><span style="color: #df5000">'not to be empty'</span><span style="color: #000000">)</span></div>
<div> <span style="color: #000000">.</span><span style="color: #000000">or</span><span style="color: #000000">(</span><span style="color: #df5000">'to be a number'</span><span style="color: #000000">)</span></div>
<div> <span style="color: #000000">.</span><span style="color: #000000">and</span><span style="color: #000000">(</span><span style="color: #df5000">'to be positive'</span><span style="color: #000000">)</span></div>
<div><span style="color: #000000">});</span></div>
</div><div class="output">
<div><span style="color: red; font-weight: bold">expected</span> { <span style="color: #555">foo</span>: <span style="color: #0086b3">9</span>, <span style="color: #555">bar</span>: <span style="color: #df5000">'bar'</span>, <span style="color: #555">baz</span>: <span style="color: #df5000">'bogus'</span>, <span style="color: #555">qux</span>: <span style="color: #0086b3">42</span> } <span style="color: red; font-weight: bold">to satisfy</span></div>
<div>{</div>
<div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: #555">foo</span>: <div style="display: inline-block; vertical-align: top">
<div>expect.it(<span style="color: #df5000">'to be a number'</span>)</div>
<div> .and(<span style="color: #df5000">'to be greater than'</span>, <span style="color: #0086b3">10</span>),</div>
</div></div>
</div></div>
<div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: #555">baz</span>: <div style="display: inline-block; vertical-align: top">
<div>expect.it(<span style="color: #df5000">'not to match'</span>, <span style="color: #df5000">/^bog/</span>),</div>
</div></div>
</div></div>
<div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: #555">qux</span>: <div style="display: inline-block; vertical-align: top">
<div>expect.it(<span style="color: #df5000">'to be a string'</span>)</div>
<div> .and(<span style="color: #df5000">'not to be empty'</span>)</div>
<div> .or(<span style="color: #df5000">'to be a number'</span>)</div>
<div> .and(<span style="color: #df5000">'to be positive'</span>)</div>
</div></div>
</div></div>
<div>}</div>
<div> </div>
<div>{</div>
<div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: #555">foo</span>: <div style="display: inline-block; vertical-align: top">
<div><span style="color: #0086b3">9</span>,</div>
</div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: red; font-weight: bold">//</span></div>
<div><span style="color: red; font-weight: bold">//</span></div>
</div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: green; font-weight: bold">✓ </span><div style="display: inline-block; vertical-align: top">
<div><span style="color: green; font-weight: bold">expected </span>9 <span style="color: green; font-weight: bold">to be a number</span></div>
</div><span style="color: #969896"> and</span></div>
<div><span style="color: red; font-weight: bold">⨯ </span><div style="display: inline-block; vertical-align: top">
<div><span style="color: red; font-weight: bold">expected</span> <span style="color: #0086b3">9</span> <span style="color: red; font-weight: bold">to be greater than</span> <span style="color: #0086b3">10</span></div>
</div></div>
</div></div>
</div></div>
<div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: #555">bar</span>: <span style="color: #df5000">'bar'</span>,</div>
</div></div>
<div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: #555">baz</span>: <div style="display: inline-block; vertical-align: top">
<div><span style="color: #df5000">'bogus'</span>,</div>
</div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: red; font-weight: bold">//</span></div>
<div><span style="color: red; font-weight: bold">//</span></div>
<div><span style="color: red; font-weight: bold">//</span></div>
</div> <div style="display: inline-block; vertical-align: top">
<div><div style="display: inline-block; vertical-align: top">
<div><span style="color: red; font-weight: bold">expected</span> <span style="color: #df5000">'bogus'</span> <span style="color: red; font-weight: bold">not to match</span> <span style="color: #df5000">/^bog/</span></div>
<div> </div>
<div><span style="background-color: red; color: white">bog</span>us</div>
</div></div>
</div></div>
</div></div>
<div> <div style="display: inline-block; vertical-align: top">
<div><span style="color: #555">qux</span>: <span style="color: #0086b3">42</span></div>
</div></div>
<div>}</div>
</div>
</div>
</div>
</section>
<script type="text/javascript" src="../../../static/toggleSidebar.js"></script>
<script type="text/javascript" src="../../../static/rememberScrollPosition.js"></script>
</body>
</html>