unexpected
Version:
Extensible BDD assertion toolkit
194 lines (165 loc) • 13.8 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" />
<link rel="shortcut icon" type="image/vnd.microsoft.icon" href="../../static/bug-icon-black.ico">
<title>fail</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=""><a href="../../assertions/any/to-be">Assertions</a></li>
<li class="active"><a href="../addAssertion">API</a></li>
<li class=""><a href="../../plugins">Plugins</a></li>
</ul>
</nav>
<div class="search" style="visibility: hidden">
<input id="search" placeholder="Search..." value="">
<div id="searchDropDown" class="dropDown">
<ul id="searchResults"></ul>
</div>
</div>
</header>
<section id="api">
<nav id="api-menu" class="sidebar js-remember-scroll-position">
<ul>
<li class="">
<a href="../addAssertion">addAssertion</a>
</li>
<li class="">
<a href="../addType">addType</a>
</li>
<li class="">
<a href="../async">async</a>
</li>
<li class="">
<a href="../clone">clone</a>
</li>
<li class="">
<a href="../expect">expect</a>
</li>
<li class="active">
<a href="">fail</a>
</li>
<li class="">
<a href="../promise">promise</a>
</li>
<li class="">
<a href="../promise-all">promise.all</a>
</li>
<li class="">
<a href="../promise-any">promise.any</a>
</li>
<li class="">
<a href="../promise-settle">promise.settle</a>
</li>
<li class="">
<a href="../toString">toString</a>
</li>
<li class="">
<a href="../UnexpectedError">UnexpectedError</a>
</li>
<li class="">
<a href="../use">use</a>
</li>
<li class="">
<a href="../withError">withError</a>
</li>
</ul>
</nav>
<div class="main" tabindex="-1">
<div class="content">
<h1 id="expect-fail-">expect.fail(...)</h1>
<p>Explicitly forces failure.</p>
<div class="code lang-javascript">
<div>expect<span style="color: #000000">.</span><span style="color: #000000">fail</span><span style="color: #000000">();</span></div>
</div><div class="output">
<div><span style="color: red; font-weight: bold">Explicit failure</span></div>
</div><div class="code lang-javascript">
<div>expect<span style="color: #000000">.</span><span style="color: #000000">fail</span><span style="color: #000000">(</span><span style="color: #df5000">'Custom failure message'</span><span style="color: #000000">);</span></div>
</div><div class="output">
<div><span style="color: red; font-weight: bold">Custom failure message</span></div>
</div><div class="code lang-javascript">
<div>expect<span style="color: #000000">.</span><span style="color: #000000">fail</span><span style="color: #000000">(</span><span style="color: #df5000">'{0} was expected to be {1}'</span><span style="color: #000000">,</span> <span style="color: #0086b3">0</span><span style="color: #000000">,</span> <span style="color: #df5000">'zero'</span><span style="color: #000000">);</span></div>
</div><div class="output">
<div><span style="color: #0086b3">0</span><span style="color: red; font-weight: bold"> was expected to be </span><span style="color: #df5000">'zero'</span></div>
</div><p>In case you want to rethrow an error, you should always use
<code>expect.fail</code>, as it ensures that the error message will be correct
for the different error modes.</p>
<div class="code lang-javascript">
<div><span style="color: #a71d5d">var</span> error <span style="color: #a71d5d">=</span> <span style="color: #a71d5d">new</span> Error<span style="color: #000000">(</span><span style="color: #df5000">'throw me'</span><span style="color: #000000">);</span></div>
<div>expect<span style="color: #000000">.</span><span style="color: #000000">fail</span><span style="color: #000000">(</span><span style="color: #a71d5d">new</span> Error<span style="color: #000000">(</span>error<span style="color: #000000">));</span></div>
</div><div class="output">
<div><span style="color: red; font-weight: bold">Error: throw me</span></div>
</div><p>When you want to build a completely custom output, you can call
<code>expect.fail</code> with a callback and receive a
<a href="https://github.com/sunesimonsen/magicpen">magicpen</a> instance that the
output can be written to.</p>
<div class="code lang-javascript">
<div>expect<span style="color: #000000">.</span><span style="color: #000000">fail</span><span style="color: #000000">(</span><span style="color: #a71d5d">function</span> <span style="color: #000000">(</span>output<span style="color: #000000">)</span> <span style="color: #000000">{</span></div>
<div> <span style="color: #df5000">'You have been a very bad boy!'</span><span style="color: #000000">.</span><span style="color: #000000">split</span><span style="color: #000000">(</span><span style="color: #183691">/ /</span><span style="color: #000000">).</span><span style="color: #000000">forEach</span><span style="color: #000000">(</span><span style="color: #a71d5d">function</span> <span style="color: #000000">(</span>word<span style="color: #000000">,</span> index<span style="color: #000000">)</span> <span style="color: #000000">{</span></div>
<div> <span style="color: #a71d5d">if</span> <span style="color: #000000">(</span>index <span style="color: #a71d5d">></span> <span style="color: #0086b3">0</span><span style="color: #000000">)</span> <span style="color: #000000">{</span> output<span style="color: #000000">.</span><span style="color: #000000">sp</span><span style="color: #000000">();</span> <span style="color: #000000">}</span></div>
<div> <span style="color: #a71d5d">var</span> style <span style="color: #a71d5d">=</span> index <span style="color: #a71d5d">%</span> <span style="color: #0086b3">2</span> <span style="color: #a71d5d">===</span> <span style="color: #0086b3">0</span> <span style="color: #a71d5d">?</span> <span style="color: #df5000">'jsPrimitive'</span> <span style="color: #000000">:</span> <span style="color: #df5000">'jsString'</span><span style="color: #000000">;</span></div>
<div> output<span style="color: #000000">[</span>style<span style="color: #000000">](</span>word<span style="color: #000000">);</span></div>
<div> <span style="color: #000000">});</span></div>
<div><span style="color: #000000">});</span></div>
</div><div class="output">
<div><span style="color: #0086b3">You</span> <span style="color: #df5000">have</span> <span style="color: #0086b3">been</span> <span style="color: #df5000">a</span> <span style="color: #0086b3">very</span> <span style="color: #df5000">bad</span> <span style="color: #0086b3">boy!</span></div>
</div><p>If you want to build an error containing a diff you can call
<code>expect.fail</code> with a error definition.</p>
<div class="code lang-javascript">
<div>expect<span style="color: #000000">.</span><span style="color: #000000">fail</span><span style="color: #000000">({</span></div>
<div> message<span style="color: #000000">:</span> <span style="color: #a71d5d">function</span> <span style="color: #000000">(</span>output<span style="color: #000000">)</span> <span style="color: #000000">{</span></div>
<div> <span style="color: #df5000">'You have been a very bad boy!'</span><span style="color: #000000">.</span><span style="color: #000000">split</span><span style="color: #000000">(</span><span style="color: #183691">/ /</span><span style="color: #000000">).</span><span style="color: #000000">forEach</span><span style="color: #000000">(</span><span style="color: #a71d5d">function</span> <span style="color: #000000">(</span>word<span style="color: #000000">,</span> index<span style="color: #000000">)</span> <span style="color: #000000">{</span></div>
<div> <span style="color: #a71d5d">if</span> <span style="color: #000000">(</span>index <span style="color: #a71d5d">></span> <span style="color: #0086b3">0</span><span style="color: #000000">)</span> <span style="color: #000000">{</span> output<span style="color: #000000">.</span><span style="color: #000000">sp</span><span style="color: #000000">();</span> <span style="color: #000000">}</span></div>
<div> <span style="color: #a71d5d">var</span> style <span style="color: #a71d5d">=</span> index <span style="color: #a71d5d">%</span> <span style="color: #0086b3">2</span> <span style="color: #a71d5d">===</span> <span style="color: #0086b3">0</span> <span style="color: #a71d5d">?</span> <span style="color: #df5000">'jsPrimitive'</span> <span style="color: #000000">:</span> <span style="color: #df5000">'jsString'</span><span style="color: #000000">;</span></div>
<div> output<span style="color: #000000">[</span>style<span style="color: #000000">](</span>word<span style="color: #000000">);</span></div>
<div> <span style="color: #000000">});</span></div>
<div> <span style="color: #000000">},</span></div>
<div> diff<span style="color: #000000">:</span> <span style="color: #a71d5d">function</span> <span style="color: #000000">(</span>output<span style="color: #000000">,</span> diff<span style="color: #000000">,</span> inspect<span style="color: #000000">,</span> equal<span style="color: #000000">)</span> <span style="color: #000000">{</span></div>
<div> <span style="color: #a71d5d">return</span> <span style="color: #000000">diff</span><span style="color: #000000">(</span><span style="color: #df5000">'You have been a very bad boy!'</span><span style="color: #000000">,</span> <span style="color: #df5000">'You have been a very mad boy!'</span><span style="color: #000000">);</span></div>
<div> <span style="color: #000000">}</span></div>
<div><span style="color: #000000">});</span></div>
</div><div class="output">
<div><span style="color: #0086b3">You</span> <span style="color: #df5000">have</span> <span style="color: #0086b3">been</span> <span style="color: #df5000">a</span> <span style="color: #0086b3">very</span> <span style="color: #df5000">bad</span> <span style="color: #0086b3">boy!</span></div>
<div> </div>
<div><div style="display: inline-block; vertical-align: top">
<div><span style="color: red">-</span></div>
</div><div style="display: inline-block; vertical-align: top">
<div><span style="color: red">You have been a very </span><span style="background-color: red; color: white">bad</span><span style="color: red"> boy!</span></div>
</div></div>
<div><div style="display: inline-block; vertical-align: top">
<div><span style="color: green">+</span></div>
</div><div style="display: inline-block; vertical-align: top">
<div><span style="color: green">You have been a very </span><span style="background-color: green; color: white">mad</span><span style="color: green"> boy!</span></div>
</div></div>
</div><p>The message can be either a <code>string</code> a
<a href="https://github.com/sunesimonsen/magicpen">magicpen</a> instance or a
function that will recieve a
<a href="https://github.com/sunesimonsen/magicpen">magicpen</a> instance.</p>
<p>If you are using the default error mode, you don't have to specify the
error message as it is just thrown away.</p>
<p>The diff is a method that will create a custom diff lazily. To get a
better understanding of the diff method see the <a href="/api/addType">type</a>
documentation.</p>
</div>
</div>
</section>
<script type="text/javascript">
baseUrl = '../..';
</script>
<script type="text/javascript" src="../../static/toggleSidebar.js"></script>
<script type="text/javascript" src="../../static/rememberScrollPosition.js"></script>
<script type="text/javascript" src="../../static/focusMain.js"></script>
<script type="text/javascript" src="../../static/search.js"></script>
</body>
</html>