我们可以定义以下测试:
spyOn(x, 'funk').andReturn(true);
如果我们接下来要定义:
spyOn(x, 'funk').andReturn(false);
我们将收到一个错误消息,说funk已经被监视。

我们如何有效地unspy以便可以使用新的返回值重新侦听?

最佳答案

您可以重新训练间谍:

//--- CODE --------------------------
x = {
    funk: function() {
        return 1;
    }
}

// --- SPECS -------------------------

describe('test x', function () {

    it("trains spies", function () {
        spyOn(x, 'funk');
        x.funk.andReturn('a');
        expect(x.funk()).toBe('a');
        x.funk.andCallThrough();
        expect(x.funk()).toBe(1);
    });
});

在这里查看小提琴-http://jsfiddle.net/eitanp461/88kvnzx3/

10-08 10:52