JS:

(function(ns) {
	var bar;
	
	function getBar() {
		return bar;
	}
	
	function setBar(value) {
		bar = value;
	}
	
	function MyTest() {
		bar = 5;
		return {
			getBar: getBar,
			setBar: setBar
		}
	}
	
	window.MyTest = MyTest;
	
}(window.MyTest));

Then spec:

describe("call fake test", function () {
	var sut;
	beforeEach(function () {
		sut = new window.MyTest();
		spyOn(sut, "getBar").and.callFake(function() {
			return 1001;
		});
	});
	it("should return 1001", function () {
		expect(sut.getBar()).toBe(1001);
	})
});
describe("create spy then force a call", function () {
	var sut,
	fetchedBar;
	beforeEach(function () {
		sut = new window.MyTest();
		spyOn(sut, "getBar").and.callFake(function() {
			return 1001;
		});
		sut.setBar(123);
		fetchedBar = sut.getBar();
	});
	
	it("tracks that the spy was called", function () {
		expect(sut.getBar).toHaveBeenCalled();
	})	
	
	it("should return 1001", function () {
		expect(sut.getBar()).toBe(1001);
	})
});

With line:

fetchedBar = sut.getBar();

I am executing getBar method, then with line:

expect(sut.getBar).toHaveBeenCalled();

I am sure that getBar method is executed, and with line:

expect(sut.getBar()).toBe(1001);

we can see that fake value is returned.

Example download from here.