我正在使用Sinon
Enzyme
进行测试。我有一个函数,它接收一组对象并将其转换为一个新的不同数组。Sinon:测试函数返回值
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
,但它给了我假的,我无法找到任何可能的解决方案,以检查它真的回来了。
你想要声明什么?我想你应该有2个数组,一个用于输入,另一个用于预期的输出。所以你只是断言用该输入调用'getContainersByHostId'应该返回期望的输出。这是你想实现的吗? –
这正是我想要断言的。但是当我对输出数组声明它时,它给了我未定义的内容。你可以写一个例子来说明我是如何做到的。也许我做错了什么。我也会编辑我的问题 – Umair
@LazarevAlexandr – Umair