must
Version:
Testing and assertion library with friendly BDD syntax — awesome.must.be.true(). Many expressive matchers and is test runner and framework agnostic. Follows RFC 2119 with its use of MUST. Good and well tested stuff.
138 lines (110 loc) • 4.09 kB
JavaScript
var Must = require("../..")
var assert = require("./assert")
describe("Must.prototype.throw", function() {
/* eslint no-throw-literal: 0 */
require("./_error_test")("throw", function(err) {
return function() { throw err }
})
it("must invoke function in no context", function() {
"use strict"
var context
Must(function() { context = this }).not.throw()
assert.strictEqual(context, null)
})
describe("given nothing", function() {
it("must pass if function throws", function() {
assert.pass(function() { Must(function() { throw 5 }).throw() })
})
it("must pass even if function throws undefined", function() {
assert.pass(function() { Must(function() { throw undefined }).throw() })
})
it("must fail if function does not throw", function() {
assert.fail(function() { Must(noop).throw() })
})
function noThrower() { void 42 }
require("./_assertion_error_test")(function() { Must(noThrower).throw() }, {
actual: undefined,
message: "function noThrower() { void 42 } must throw"
})
})
describe("given null", function() {
it("must pass if function throws null", function() {
assert.pass(function() {
Must(function() { throw null }).throw(null)
})
})
it("must fail if function throws undefined", function() {
assert.fail(function() {
Must(function() { throw undefined }).throw(null)
})
})
it("must fail if function does not throw", function() {
assert.fail(function() { Must(noop).throw(null) })
})
})
describe("given undefined", function() {
it("must pass if function throws undefined", function() {
assert.pass(function() {
Must(function() { throw undefined }).throw(undefined)
})
})
it("must fail if function throws null", function() {
assert.fail(function() {
Must(function() { throw null }).throw(undefined)
})
})
it("must fail if function does not throw", function() {
assert.fail(function() { Must(noop).throw(undefined) })
})
})
describe("given String", function() {
function stringThrower() { throw "Oh no!" }
it("must pass if function throws an identical string", function() {
assert.pass(function() { Must(stringThrower).throw("Oh no!") })
})
it("must fail if function throws with part of identical string",
function() {
assert.fail(function() { Must(stringThrower).throw("Oh no") })
})
it("must fail if function throws an equivalent number", function() {
assert.fail(function() { Must(function() { throw 42 }).throw("42") })
})
it("must fail if function throws an unequivalent string", function() {
assert.fail(function() { Must(stringThrower).throw("Oh yes!") })
})
it("must fail if function does not throw", function() {
assert.fail(function() { Must(noop).throw("Oh no!") })
})
function thrower() { throw "Nope!" }
require("./_assertion_error_test")(function() {
Must(thrower).throw("Oh no!")
}, {
actual: "Nope!",
expected: "Oh no!",
message: "function thrower() { throw \"Nope!\" } must throw \"Oh no!\""
})
})
describe("given RegExp", function() {
function stringThrower() { throw "Oh no!" }
it("must pass if function throws an matching string", function() {
assert.pass(function() { Must(stringThrower).throw(/no!/) })
})
it("must fail if function throws an unmatching string", function() {
assert.fail(function() { Must(stringThrower).throw(/yes!/) })
})
it("must fail if function does not throw", function() {
assert.fail(function() { Must(noop).throw(/no!/) })
})
})
describe("given Function", function() {
it("must fail if function does not throw", function() {
assert.fail(function() { Must(noop).throw(Error) })
})
})
describe(".not", function() {
it("must invert the assertion", function() {
assert.fail(function() { Must(function() { throw 42 }).not.throw() })
})
})
})
function noop() {}