【问题标题】:Fake return value of function call, each call with different data函数调用的假返回值,每次调用都有不同的数据
【发布时间】:2021-11-20 17:22:33
【问题描述】:

我有想用 sinon 伪造的函数。我使用 DI 注入伪造的函数。

通常我会 fake.resolves(result) 但我无法在测试期间更改解析值。

我执行了三次函数,每次都期望不同的结果。我想做类似这里fake.resolvesEach([result1, result2, result3])的事情。

我可以用什么来解决我的问题?

【问题讨论】:

    标签: node.js typescript dependency-injection sinon


    【解决方案1】:

    你应该使用onCall(n)函数

    样本 1:

    const FetchStub = sinon
     .stub()
     .onCall(0)
     .resolves(serviceAccountAccessTokenRes)
     .onCall(1)
     .resolves(signJsonClaimRes)
     .onCall(2)
     .resolves(getTokenRes)
     .onCall(3)
     .resolves(makeIapPostRequestRes);
    const sample = getSample(FetchStub);
    

    示例 2:

    
    describe("stub", function () {
        it("should behave differently on consecutive calls", function () {
            const callback = sinon.stub();
            callback.onCall(0).returns(1);
            callback.onCall(1).returns(2);
            callback.returns(3);
    
            assert.equals(callback(), 1); // Returns 1
            assert.equals(callback(), 2); // Returns 2
            assert.equals(callback(), 3); // All following calls return 3
        });
    });
    

    您可以阅读https://sinonjs.org/releases/latest/stubs/中的文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多