| /* |
| * Test utils.betterErrors. utils.betterErrors should provide sensible error messages even when the error does not |
| * contain expected, actual or operator. |
| */ |
| var assert = require("../lib/assert"); |
| var should = require("should"); |
| var types = require("../lib/types"); |
| var util = require('util'); |
| var utils = require("../lib/utils"); |
| |
| function betterErrorStringFromError(error) { |
| var assertion = types.assertion({error: error}); |
| var better = utils.betterErrors(assertion); |
| return better.error.stack.toString(); |
| } |
| |
| function performBasicChecks(betterErrorString) { |
| betterErrorString.should.include("AssertionError"); |
| betterErrorString.should.include("test-bettererrors"); |
| //betterErrorString.should.not.include("undefined"); |
| } |
| |
| /** |
| * Control test. Provide an AssertionError that contains actual, expected operator values. |
| * @param test the test object from nodeunit |
| */ |
| exports.testEqual = function (test) { |
| try { |
| assert.equal(true, false); |
| } catch (error) { |
| var betterErrorString = betterErrorStringFromError(error); |
| performBasicChecks(betterErrorString); |
| betterErrorString.should.include("true"); |
| betterErrorString.should.include("false"); |
| betterErrorString.should.include("=="); |
| test.done(); |
| } |
| }; |
| |
| /** |
| * Test an AssertionError that does not contain actual, expected or operator values. |
| * @param test the test object from nodeunit |
| */ |
| exports.testAssertThrows = function (test) { |
| try { |
| assert.throws(function () { |
| }); |
| } catch (error) { |
| var betterErrorString = betterErrorStringFromError(error); |
| performBasicChecks(betterErrorString); |
| test.done(); |
| } |
| }; |
| |
| /** |
| * Test with an error that is not an AssertionError. |
| * |
| * This function name MUST NOT include "AssertionError" because one of the |
| * tests it performs asserts that the returned error string does not contain |
| * the "AssertionError" term. If this function name does include that term, it |
| * will show up in the stack trace and the test will fail! |
| * @param test the test object from nodeunit |
| */ |
| exports.testErrorIsNotAssertion = function (test) { |
| try { |
| throw new Error("test error"); |
| } catch (error) { |
| var betterErrorString = betterErrorStringFromError(error); |
| betterErrorString.should.not.include("AssertionError"); |
| betterErrorString.should.include("Error"); |
| betterErrorString.should.include("test error"); |
| betterErrorString.should.include("test-bettererrors"); |
| betterErrorString.should.not.include("undefined"); |
| test.done(); |
| } |
| }; |