gpt4 book ai didi

node.js - 如何让 sinon mock 在不同的调用上返回不同的对象?

转载 作者:太空宇宙 更新时间:2023-11-04 00:00:36 24 4
gpt4 key购买 nike

 mock = sinon.mock();
mock.exactly(2);
mock.callsArgWith(1, m1);
mock.callsArgWith(1, m2);

在我的测试中,m2 覆盖 m1。我想在第一次调用中返回 m1,在第二次调用中返回 m2。

如何做到这一点?

最佳答案

您可以使用onCall(n) (或别名 onFirstCallonSecondCallonThirdCall )定义第 n 个调用的行为:

import * as sinon from 'sinon';

test('mock returns different objects on different calls', () => {
const m1 = { id: 1 }
const m2 = { id: 2 }

const mock = sinon.mock();
mock.exactly(2);
mock
.onFirstCall().callsArgWith(1, m1) // first call calls its second arg with m1
.onSecondCall().callsArgWith(1, m2); // second call calls its second arg with m2

const spy = sinon.spy();
mock('arg0', spy); // spy should be called with m1
mock('arg0', spy); // spy should be called with m2

sinon.assert.calledWithExactly(spy.getCall(0), m1); // SUCCESS
sinon.assert.calledWithExactly(spy.getCall(1), m2); // SUCCESS
mock.verify(); // SUCCESS
});

关于node.js - 如何让 sinon mock 在不同的调用上返回不同的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54876608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com