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.
94 lines (73 loc) • 3.3 kB
JavaScript
var _ = require("lodash")
var Must = require("../..")
var assert = require("./assert")
module.exports = function(name, actualize) {
var create = _.compose(Must, actualize)
describe("as an error matcher", function() {
describe("given String", function() {
it("must pass given error with identical message", function() {
assert.pass(function() { create(new Error("Oh no!"))[name]("Oh no!") })
})
it("must fail given error with part of identical message",
function() {
assert.fail(function() { create(new Error("Oh no!"))[name]("Oh no") })
})
it("must fail given error with unequivalent message", function() {
assert.fail(function() { create(new Error("Oh no!"))[name]("Oh yes!") })
})
})
describe("given RegExp", function() {
it("must pass given error with matching message", function() {
assert.pass(function() { create(new Error("Oh no!"))[name](/no!/) })
})
it("must fail given error with unmatching message", function() {
assert.fail(function() { create(new Error("Oh no!"))[name](/yes!/) })
})
})
describe("given Function", function() {
// Intentionally do not subclass FakeError from Error.
function FakeError(msg) { this.message = msg == null ? "" : msg }
FakeError.prototype.message = ""
it("must pass given error instance of function", function() {
assert.pass(function() { create(new FakeError)[name](FakeError) })
})
it("must pass given error child instance of function", function() {
assert.pass(function() { create(new TypeError)[name](Error) })
})
it("must fail given error instance of other function", function() {
assert.fail(function() { create(new Error)[name](FakeError) })
})
it("must fail given error parent instance of function", function() {
assert.fail(function() { create(new Error)[name](TypeError) })
})
describe("with String", function() {
var err = new TypeError("Oh no!")
it("must pass given error with identical message", function() {
assert.pass(function() { create(err)[name](TypeError, "Oh no!") })
})
it("must fail given error other instance", function() {
assert.fail(function() { create(err)[name](RangeError, "Oh no!") })
})
it("must fail given error with part of identical message",
function() {
assert.fail(function() { create(err)[name](TypeError, "Oh no") })
})
it("must fail given error with unequivalent message", function() {
assert.fail(function() { create(err)[name](TypeError, "Oh yes!") })
})
})
describe("with RegExp", function() {
var err = new TypeError("Oh no!")
it("must pass given error with matching message", function() {
assert.pass(function() { create(err)[name](TypeError, /no!/) })
})
it("must fail given error other instance", function() {
assert.fail(function() { create(err)[name](RangeError, /no!/) })
})
it("must fail given error with unmatching message", function() {
assert.fail(function() { create(err)[name](TypeError, /yes!/) })
})
})
})
})
}