Sinon: 测试函数 return 值
Sinon: Test function return value
我正在使用 Sinon
Enzyme
进行测试。我有一个函数,它接受一个对象数组并将其转换为一个新的不同数组。
getContainersByHostId(data) {
return _.chain(data)
.groupBy('hostId')
.toPairs()
.map(currentItem => _.zipObject(['hostId', 'containers'], currentItem))
.value();
}
参数:
const containers = [{
id: 'c_01',
hostId: 'h_01',
hostIp: '192.168.1.0',
name: 'Some Container'
}];
结果:
[{hostId: 'h_01',
containers: [{
hostId: 'h_01',
ip: '192.168.1.0',
id: 'c_01',
name: 'Some Container'
}]}];
这很好用。但是,我面临的问题是在单元测试中。所以目前我有这个。
const containers = [{
id: 'c_01',
hostId: 'h_01',
hostIp: '192.168.1.0',
name: 'Indigo Container'
}];
const wrapper = shallow(<Groups {...props} />);
const instance = wrapper.instance();
sandbox.stub(instance, 'getContainersByHostId');
instance.getContainersByHostId(containers);
expect(instance.getContainersByHostId.calledWith(containers)).to.equal(true);
});
如何测试传入的参数是否等于新数组?
更新:
我试过 returnValue
但它给了我错误,我找不到任何可能的解决方案来检查它真正返回的内容。
首先,当你存根一个函数时,你取消了它的所有行为,所以如果你没有为这个存根指定一些值 return 那么它将 return undefined
.您很可能将它与 sinon.spy()
.
混淆了
如果我理解正确的话,你所需要的一切都会更容易实现。 Sinon 根本不需要。类似于:
const modified = instance.getContainersByHostId(inputArray);
expect(modified).to.eql(expectedArray);
我正在使用 Sinon
Enzyme
进行测试。我有一个函数,它接受一个对象数组并将其转换为一个新的不同数组。
getContainersByHostId(data) {
return _.chain(data)
.groupBy('hostId')
.toPairs()
.map(currentItem => _.zipObject(['hostId', 'containers'], currentItem))
.value();
}
参数:
const containers = [{
id: 'c_01',
hostId: 'h_01',
hostIp: '192.168.1.0',
name: 'Some Container'
}];
结果:
[{hostId: 'h_01',
containers: [{
hostId: 'h_01',
ip: '192.168.1.0',
id: 'c_01',
name: 'Some Container'
}]}];
这很好用。但是,我面临的问题是在单元测试中。所以目前我有这个。
const containers = [{
id: 'c_01',
hostId: 'h_01',
hostIp: '192.168.1.0',
name: 'Indigo Container'
}];
const wrapper = shallow(<Groups {...props} />);
const instance = wrapper.instance();
sandbox.stub(instance, 'getContainersByHostId');
instance.getContainersByHostId(containers);
expect(instance.getContainersByHostId.calledWith(containers)).to.equal(true);
});
如何测试传入的参数是否等于新数组?
更新:
我试过 returnValue
但它给了我错误,我找不到任何可能的解决方案来检查它真正返回的内容。
首先,当你存根一个函数时,你取消了它的所有行为,所以如果你没有为这个存根指定一些值 return 那么它将 return undefined
.您很可能将它与 sinon.spy()
.
如果我理解正确的话,你所需要的一切都会更容易实现。 Sinon 根本不需要。类似于:
const modified = instance.getContainersByHostId(inputArray);
expect(modified).to.eql(expectedArray);