Skip to main content
Using Deno in production at your company? Earn free Deno merch.
Give us feedback
Module

x/chai/lib/chai/utils/addLengthGuard.js>addLengthGuard

BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.
Latest
function addLengthGuard
import { addLengthGuard } from "https://deno.land/x/chai@v5.1.1/lib/chai/utils/addLengthGuard.js";

.addLengthGuard(fn, assertionName, isChainable)

Define length as a getter on the given uninvoked method assertion. The getter acts as a guard against chaining length directly off of an uninvoked method assertion, which is a problem because it references function's built-in length property instead of Chai's length assertion. When the getter catches the user making this mistake, it throws an error with a helpful message.

There are two ways in which this mistake can be made. The first way is by chaining the length assertion directly off of an uninvoked chainable method. In this case, Chai suggests that the user use lengthOf instead. The second way is by chaining the length assertion directly off of an uninvoked non-chainable method. Non-chainable methods must be invoked prior to chaining. In this case, Chai suggests that the user consult the docs for the given assertion.

If the length property of functions is unconfigurable, then return fn without modification.

Note that in ES6, the function's length property is configurable, so once support for legacy environments is dropped, Chai's length property can replace the built-in function's length property, and this length guard will no longer be necessary. In the mean time, maintaining consistency across all environments is the priority.

Parameters

fn
assertionName
isChainable