UNPKG

unexpected

Version:
399 lines (333 loc) 25.4 kB
<!DOCTYPE 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>function - to throw</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="../../any/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="../../any/to-be-a">to be a</a> </li> <li class=""> <a href="../../any/to-be-falsy">to be falsy</a> </li> <li class=""> <a href="../../any/to-be-null">to be null</a> </li> <li class=""> <a href="../../any/to-be-truthy">to be truthy</a> </li> <li class=""> <a href="../../any/to-be-ok">to be ok</a> </li> <li class=""> <a href="../../any/to-be-undefined">to be undefined</a> </li> <li class=""> <a href="../../any/to-be">to be</a> </li> <li class=""> <a href="../../any/to-equal">to equal</a> </li> <li class=""> <a href="../../any/to-satisfy">to satisfy</a> </li> <li class=""> <a href="../../any/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="../to-have-arity">to have arity</a> </li> <li class="active"> <a href="">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 the function throws an error when called.</p> <div class="code lang-javascript"> <div><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">willThrow</span><span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;error&nbsp;message'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">}</span></div> <div><span style="color: #000000">expect</span><span style="color: #000000">(</span>willThrow<span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">expect</span><span style="color: #000000">(</span>willThrow<span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw&nbsp;error'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">expect</span><span style="color: #000000">(</span>willThrow<span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw&nbsp;exception'</span><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><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">willNotThrow</span><span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{},</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw'</span><span style="color: #000000">);</span></div> </div><div class="output"> <div><span style="color: red; font-weight: bold">expected</span>&nbsp;<span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">willNotThrow</span><span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{}</span>&nbsp;<span style="color: red; font-weight: bold">to&nbsp;throw</span></div> </div><p>You can assert the error message is a given string if you provide a string as the second parameter.</p> <div class="code lang-javascript"> <div><span style="color: #000000">expect</span><span style="color: #000000">(</span><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;error&nbsp;message'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw'</span><span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">'The&nbsp;error&nbsp;message'</span><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><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;error&nbsp;message!'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw'</span><span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">'The&nbsp;error&nbsp;message'</span><span style="color: #000000">);</span></div> </div><div class="output"> <div><span style="color: red; font-weight: bold">expected</span></div> <div><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;error&nbsp;message!'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">}</span></div> <div><span style="color: red; font-weight: bold">to&nbsp;throw</span>&nbsp;<span style="color: #df5000">'The&nbsp;error&nbsp;message'</span></div> <div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"> <div><span style="color: red; font-weight: bold">expected</span>&nbsp;<span style="color: #df5000">'The&nbsp;error&nbsp;message!'</span>&nbsp;<span style="color: red; font-weight: bold">to&nbsp;equal</span>&nbsp;<span style="color: #df5000">'The&nbsp;error&nbsp;message'</span></div> <div>&nbsp;</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">The&nbsp;error&nbsp;message</span><span style="background-color: red; color: white">!</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">The&nbsp;error&nbsp;message</span></div> </div></div> </div></div> </div><p>By providing a regular expression as the second parameter you can assert the error message matches the given regular expression.</p> <div class="code lang-javascript"> <div><span style="color: #000000">expect</span><span style="color: #000000">(</span><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;error&nbsp;message'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw'</span><span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">/error&nbsp;message/</span><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><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;error&nbsp;message!'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw'</span><span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">/catastrophic&nbsp;failure/</span><span style="color: #000000">);</span></div> </div><div class="output"> <div><span style="color: red; font-weight: bold">expected</span></div> <div><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;error&nbsp;message!'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">}</span></div> <div><span style="color: red; font-weight: bold">to&nbsp;throw</span>&nbsp;<span style="color: #df5000">/catastrophic&nbsp;failure/</span></div> <div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"> <div><span style="color: red; font-weight: bold">expected</span>&nbsp;<span style="color: #df5000">'The&nbsp;error&nbsp;message!'</span>&nbsp;<span style="color: red; font-weight: bold">to&nbsp;match</span>&nbsp;<span style="color: #df5000">/catastrophic&nbsp;failure/</span></div> </div></div> </div><p>You can also provide a function as the second parameter to do arbitrary assertions on the error.</p> <div class="code lang-javascript"> <div><span style="color: #000000">expect</span><span style="color: #000000">(</span><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">this</span><span style="color: #000000">.</span>foo<span style="color: #000000">.</span><span style="color: #000000">bar</span><span style="color: #000000">();</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw'</span><span style="color: #000000">,</span>&nbsp;<span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">(</span>e<span style="color: #000000">)</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #000000">expect</span><span style="color: #000000">(</span>e<span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">'to&nbsp;be&nbsp;a'</span><span style="color: #000000">,</span>&nbsp;TypeError<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><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'Another&nbsp;error'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'to&nbsp;throw'</span><span style="color: #000000">,</span>&nbsp;<span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">(</span>e<span style="color: #000000">)</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #000000">expect</span><span style="color: #000000">(</span>e<span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">'to&nbsp;be&nbsp;a'</span><span style="color: #000000">,</span>&nbsp;TypeError<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>&nbsp;Error({&nbsp;<span style="color: #555">message</span>:&nbsp;<span style="color: #df5000">'Another&nbsp;error'</span>&nbsp;})&nbsp;<span style="color: red; font-weight: bold">to&nbsp;be&nbsp;a</span>&nbsp;TypeError</div> </div><p>This assertion can be negated using the <code>not</code> flag:</p> <div class="code lang-javascript"> <div><span style="color: #000000">expect</span><span style="color: #000000">(</span><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;<span style="color: #969896">&nbsp;//&nbsp;Do&nbsp;some&nbsp;work&nbsp;that&nbsp;should&nbsp;not&nbsp;throw</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'not&nbsp;to&nbsp;throw'</span><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><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'threw&nbsp;anyway'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'not&nbsp;to&nbsp;throw'</span><span style="color: #000000">);</span></div> </div><div class="output"> <div><span style="color: red; font-weight: bold">expected</span></div> <div><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'threw&nbsp;anyway'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">}</span></div> <div><span style="color: red; font-weight: bold">not&nbsp;to&nbsp;throw</span></div> <div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"> <div><span style="color: red; font-weight: bold">threw:&nbsp;</span>Error({&nbsp;<span style="color: #555">message</span>:&nbsp;<span style="color: #df5000">'threw&nbsp;anyway'</span>&nbsp;})</div> </div></div> </div><p>You can also use the <code>not</code> flag in combination with matching the error message.</p> <div class="code lang-javascript"> <div><span style="color: #000000">expect</span><span style="color: #000000">(</span><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;correct&nbsp;error&nbsp;message'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'not&nbsp;to&nbsp;throw'</span><span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">/great&nbsp;success/</span><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><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;correct&nbsp;error&nbsp;message'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">},</span>&nbsp;<span style="color: #df5000">'not&nbsp;to&nbsp;throw'</span><span style="color: #000000">,</span>&nbsp;<span style="color: #df5000">/error/</span><span style="color: #000000">);</span></div> </div><div class="output"> <div><span style="color: red; font-weight: bold">expected</span></div> <div><span style="color: #0086b3">function</span>&nbsp;<span style="color: #000000">()</span>&nbsp;<span style="color: #000000">{</span></div> <div>&nbsp;&nbsp;<span style="color: #0086b3">throw</span>&nbsp;<span style="color: #0086b3">new</span>&nbsp;Error<span style="color: #000000">(</span><span style="color: #df5000">'The&nbsp;correct&nbsp;error&nbsp;message'</span><span style="color: #000000">);</span></div> <div><span style="color: #000000">}</span></div> <div><span style="color: red; font-weight: bold">not&nbsp;to&nbsp;throw</span>&nbsp;<span style="color: #df5000">/error/</span></div> <div>&nbsp;&nbsp;<div style="display: inline-block; vertical-align: top"> <div><span style="color: red; font-weight: bold">expected</span>&nbsp;<span style="color: #df5000">'The&nbsp;correct&nbsp;error&nbsp;message'</span>&nbsp;<span style="color: red; font-weight: bold">not&nbsp;to&nbsp;match</span>&nbsp;<span style="color: #df5000">/error/</span></div> <div>&nbsp;</div> <div>The&nbsp;correct&nbsp;<span style="background-color: red; color: white">error</span>&nbsp;message</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>