SO question

Jasmine + Angular

by eitanp461

HTML

<script src="http://jasmine.github.io/2.0/lib/jasmine.js"></script>
<script src="http://jasmine.github.io/2.0/lib/jasmine-html.js"></script>
<script src="http://jasmine.github.io/2.0/lib/boot.js"></script>
<link rel="stylesheet" href="http://jasmine.github.io/2.0/lib/jasmine.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular-mocks.js"></script>

JavaScript

// Test
describe('Custom matcher', function () {
    var customMatchers = {
        toBeThisOrThat: function (util, customEqualityTesters) {
            return {
                compare: function (actual) {
                    var result = {};
                    result.pass = util.equals(actual, "This", customEqualityTesters) || util.equals(actual, "That", customEqualityTesters);
                    if (result.pass) {
                        result.message = "Expected " + actual + " not to be this or that";
                    } else {
                        result.message = "Expected " + actual + " to be this or that";
                    }
                    return result;
                }
            };
        }
    };
    beforeEach(function () {
        jasmine.addMatchers(customMatchers);
    });

    it("should equal this or that", function () {
        expect('This').toBeThisOrThat();
        expect('That').toBeThisOrThat();
        expect('foo').not.toBeThisOrThat();
    });
})