Fake return 函数调用的值,每次调用不同的数据
Fake return value of function call, each call with different data
我有一个函数,我想用 sinon 来伪造。我使用 DI 注入伪函数。
通常我会
fake.resolves(result)
但我无法在测试期间更改已解析的值。
我执行了三次函数,每次都希望得到不同的结果。我想在这里 fake.resolvesEach([result1, result2, result3])
.
做类似的事情
我可以用什么来解决我的问题?
你应该使用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
});
});
中的文档
我有一个函数,我想用 sinon 来伪造。我使用 DI 注入伪函数。
通常我会
fake.resolves(result)
但我无法在测试期间更改已解析的值。
我执行了三次函数,每次都希望得到不同的结果。我想在这里 fake.resolvesEach([result1, result2, result3])
.
我可以用什么来解决我的问题?
你应该使用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
});
});
中的文档