What is chai-string?
chai-string is an extension for the Chai assertion library that provides a set of string-specific assertions. It allows developers to write more readable and expressive tests for string values.
What are chai-string's main functionalities?
startsWith
Asserts that a string starts with a given substring.
const chai = require('chai');
const chaiString = require('chai-string');
chai.use(chaiString);
const expect = chai.expect;
expect('Hello, world!').to.startWith('Hello');
endsWith
Asserts that a string ends with a given substring.
const chai = require('chai');
const chaiString = require('chai-string');
chai.use(chaiString);
const expect = chai.expect;
expect('Hello, world!').to.endWith('world!');
contains
Asserts that a string contains a given substring.
const chai = require('chai');
const chaiString = require('chai-string');
chai.use(chaiString);
const expect = chai.expect;
expect('Hello, world!').to.contain('world');
equalIgnoreCase
Asserts that two strings are equal, ignoring case.
const chai = require('chai');
const chaiString = require('chai-string');
chai.use(chaiString);
const expect = chai.expect;
expect('Hello').to.equalIgnoreCase('hello');
singleLine
Asserts that a string is a single line (i.e., does not contain newline characters).
const chai = require('chai');
const chaiString = require('chai-string');
chai.use(chaiString);
const expect = chai.expect;
expect('Hello, world!').to.be.singleLine;
Other packages similar to chai-string
chai
Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework. While chai-string extends Chai with string-specific assertions, Chai itself provides a more general set of assertions for various data types.
jest
Jest is a delightful JavaScript Testing Framework with a focus on simplicity. It includes built-in matchers for string assertions, such as `toMatch` for regex matching and `toContain` for substring checks. However, it does not provide as many specialized string assertions as chai-string.
should
Should is an expressive, readable, framework-agnostic assertion library. It provides some string-specific assertions like `startWith` and `endWith`, similar to chai-string, but it is not as focused on string assertions as chai-string.
chai-string
Matchers for chai to help with common string comparison assertions.
Usage
Browser
<script src="chai.js"></script>
<script src="chai-string.js"></script>
Server
var chai = require('chai');
chai.use(require('chai-string'));
Assertions
- startsWith/startWith
- endsWith/endWith
- equalIgnoreCase
- equalIgnoreSpaces
- containIgnoreSpaces
- singleLine
- reverseOf
- palindrome
- entriesCount
- indexOf
All assertions are defined for both the BDD and TDD syntax but some aliases exist to make the assertions look good with both styles.
var d1 = 'abcdef',
d2 = 'abc';
d1.should.startWith.d2
expect(d1).to.startsWith(d2)
assert.startsWith(d1, d2)
startsWith/startWith
assert.startsWith('abcdef', 'abc');
expect('abcdef').to.startsWith('abc');
'abcdef'.should.startWith('abc');
endsWith/endWith
assert.endsWith('abcdef', 'def');
expect('abcdef').to.endsWith('def');
'abcdef'.should.endWith('def');
equalIgnoreCase
assert.equalIgnoreCase('abcdef', 'AbCdEf');
expect('abcdef').to.equalIgnoreCase('AbCdEf');
equalIgnoreSpaces
assert.equalIgnoreSpaces('abcdef', 'a\nb\tc\r d ef');
expect('abcdef').to.equalIgnoreSpaces('a\nb\tc\r d ef');
containIgnoreSpaces
assert.containIgnoreSpaces('abcdefgh', 'a\nb\tc\r d ef');
expect('abcdefgh').to.containIgnoreSpaces('a\nb\tc\r d ef');
containIgnoreCase
assert.containIgnoreCase('abcdefgh', 'AbcDefGH');
expect('abcdefgh').to.containIgnoreCase('AbcDefGH');
'abcdef'.should.containIgnoreCase('cDe');
singleLine
assert.singleLine('abcdef');
expect('abcdef').to.be.singleLine();
reverseOf
assert.reverseOf('abcdef', 'fedcba');
expect('abcdef').to.be.reverseOf('fedcba');
palindrome
assert.palindrome('abccba');
expect('abccba').to.be.palindrome();
entriesCount
assert.entriesCount('abcabd', 'ab', 2);
expect('abcabd').to.have.entriesCount('ab', 2);
indexOf
assert.indexOf('abcabd', 'ab', 0);
expect('abcabd').to.have.indexOf('ab', 0);
Thanks
Thanks to the chai-datetime module for giving me an idea for how to structure and test a chai plugin.