我有一个要验证功能的测试,称为
具有特定值和包含数组的对象。
在this个文档之后,我正在执行以下测试:
test('...', () => {
...
expect(queue.publish).toBeCalledWith('fetch-part', expect.objectContaining({
parts: expect.arrayContaining ([
'a',
'b'
])
})
})
此测试无法显示接收到的对象具有不存在的值
另外,它表示数组中各项的顺序很重要。
如何测试对象中的特定字段(即数组)包含一些值?
答案 0 :(得分:0)
如何测试对象中的特定字段(即数组)包含一些值?
您的方法是一种很好的方法。
这是一个简单的工作示例:
it('should work', () => {
const spy = jest.fn();
spy('fetch-part', {
parts: ['z', 'c', 'b', 'y', 'a', 'x'],
somethingElse: 'hello world'
});
expect(spy).toBeCalledWith('fetch-part', expect.objectContaining({
parts: expect.arrayContaining([
'a',
'b'
])
})); // Success!
});
更新
OP在评论中提到他们决定使用.mock.calls
来获取参数并直接对其进行测试:
it('should work', () => {
const spy = jest.fn();
spy('fetch-part', {
parts: ['z', 'c', 'b', 'y', 'a', 'x'],
somethingElse: 'hello world'
});
expect(spy.mock.calls[0][1].parts).toContain('a', 'b'); // Success!
});