Jasmine 2.0 SO answer

Jasmine 2.0 using spyOn

HTML

<script src="https://jasmine.github.io/2.2/lib/jasmine.js"></script>
<script src="https://jasmine.github.io/2.2/lib/jasmine-html.js"></script>
<script src="https://jasmine.github.io/2.2/lib/boot.js"></script>
<link rel="stylesheet" href="https://jasmine.github.io/2.2/lib/jasmine.css">

JavaScript

// Source
var objectUnderTest = {
    someFunction: function (cb) {

        var promise = new Promise(function (resolve, reject) {
            if (true) {
                cb();
                resolve();
            } else {
                reject(new Error("something bad happened"));
            }
        });
        return promise;
    }
    otherFunction: function (x) {
    	return true;
    }
}

// Test
describe('foo', function () {
    it('tests', function (done) {
        var spy = jasmine.createSpy('mySpy');
        objectUnderTest.someFunction(spy).then(function () {
            expect(spy).toHaveBeenCalled();
            done();
        });
    });
    it('tests2', function (done) {
        var spy = jasmine.createSpy('mySpy');
        objectUnderTest.someFunction(spy).then(function () {
            expect(spy).toHaveBeenCalled();
            done();
        });
    });
    it('tests deeper', function (done) {
        var spy = jasmine.createSpy('mySpy');
        objectUnderTest.someFunction(spy).then(function () {
            expect(spy).toHaveBeenCalled();
            spy.calls.reset();
            return objectUnderTest.someFunction(spy);
        }).then(function () {
            expect(spy).toHaveBeenCalled();
            expect(spy.calls.count()).toBe(1);
            done();
        });
    });
});