sen*_*dra 8 javascript unit-testing mocha.js sinon chai
我有摩卡,sinon和柴的测试服:
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']);
});
...
Run Code Online (Sandbox Code Playgroud)
如果我resSpy.reset()说它工作正常.我已经读过reset()函数是为了重置间谍的状态.
但我不明白的是,如果我把resSpy.restore()然后它抛出下一个错误:
TypeError: resSpy.restore is not a function
Run Code Online (Sandbox Code Playgroud)
我不知道我做错了什么或者使用恢复的正确方法是什么.
此外,我不知道何时应该使用重置或恢复.
rob*_*lep 11
spy.restore() 仅在您使用以下初始化时才有用:
let someSpy = sinon.spy(obj, 'someFunction');
Run Code Online (Sandbox Code Playgroud)
这将取代 obj.someFunction间谍.如果你想回到原版,你可以使用someSpy.restore().
你正在使用一个独立的间谍,所以没有什么可以恢复的.
此外,因为您正在为每个测试创建新的间谍beforeEach,所以您不必重置任何内容afterEach.这只有在你想重用间谍时才有用:
describe('general visor methods tests', () => {
let someSpy = sinon.spy(); // create the spy once
afterEach(() => {
someSpy.reset(); // reset after each test
});
...
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3690 次 |
| 最近记录: |