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();
});
});
});