出力を台無しにしたい関数があります。andCallThrough と andCallFake を組み合わせたようなものです。たとえば、次のコンストラクタ関数があるとします。
function Widget() {
this.frobble = function() {return 1;};
}
function frotz() {
return new Widget().frobble();
}
私ができるようにしたいのは、次のようなものです。
describe("Widget", function() {
it("is created and frobbled when frotz() is called", function() {
var widget;
spyOn(window, 'Widget').andMessWithOutput(function(newWidget) {
widget = newWidget;
spyOn(widget, 'frobble').andCallThrough();
frotz();
expect(widget.frobble.calls.length).toBe(1);
});
});
});