gpt4 book ai didi

javascript - 使用 sinon spy restore 或 reset 的正确方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 04:08:48 26 4
gpt4 key购买 nike

我有一套带有 mocha、sinon 和 chai 的测试服:

describe('general visor methods tests', () => {

let res, req, next, resSpy, resNext;

beforeEach(() => {
res = {};
next = () => {};
resSpy = res.json = sinon.spy();
resNext = next = sinon.spy();
});
afterEach(() => {
resSpy.restore();
resNext.reset();
});


describe('get basemap layers from owner model', () => {
it('should send the basemap provided by the owner model', () => {
owner.basemap = ['basemap1', 'basemap2'];
getBaseMapLayersFromConfig(req, res, next);
// console.log(resSpy.args[0][0].data);
expect(resSpy.calledOnce).to.eql(true);
expect(resSpy.args[0][0].message).to.eql('basemaps correctly found');
expect(resSpy.args[0][0].data).to.eql(['basemap1', 'basemap2']);
});

...

如果我输入 resSpy.reset() 它工作正常。我读到 reset() 函数是重置 spy 的状态。

但我不明白的是,如果我输入 resSpy.restore() 那么它会抛出下一个错误:

TypeError: resSpy.restore is not a function

我不知道自己哪里做错了,也不知道什么才是正确的使用 restore 的方法。

我也不太清楚什么时候应该使用重置或恢复。

最佳答案

spy.restore() 仅在您使用以下初始化时有用:

let someSpy = sinon.spy(obj, 'someFunction');

这将替换 obj.someFunction 为 spy 。如果您想回到原来的状态,可以使用 someSpy.restore()

您使用的是独立 spy ,所以没有什么可以恢复的。

此外,因为您在 beforeEach 中为每个测试创建新的 spy ,所以您不必在 afterEach 中重置任何内容。这仅在您想重用 spy 时才有用:

describe('general visor methods tests', () => {
let someSpy = sinon.spy(); // create the spy once

afterEach(() => {
someSpy.reset(); // reset after each test
});

...
});

关于javascript - 使用 sinon spy restore 或 reset 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39244242/

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