我是 Jest 的新手,所以如果这是一个明显的答案,请原谅我,但在滚动文档后我找不到答案。
我有一个函数(funcA) ,它根据接收的参数将不同长度的数组传递给另一个函数(funcB)funcA。funcB我试图根据我提供给 的参数来测试传递给的数组的长度是否正确funcA。我并不关心数组的内容,只是它有一定的长度。这是我目前的尝试:
// Modules
const funcA = require('./funcA')
// Mock
const funcB = jest.fn(pairs => {
return pairs[0]
})
// Test
test('Should pass array of 3623 length', () => {
const result = funcA(75)
expect(result).toBeInstanceOf(Object)
expect(funcB).toHaveBeenCalledWith(expect.any(Array).toHaveLength(3623))
})
Run Code Online (Sandbox Code Playgroud)
我想尝试使用any()如果可以的话,但以下测试结果出现错误:
类型错误:expect.any(...).toHaveLength 不是函数
即使我将 括expect.any(...)在另一组括号中,我也会收到相同的错误。有什么办法可以实现我想要的吗?
Est*_*ask 12
仅断言数组长度并忽略数组内容的测试没有什么价值。越具体越好。如果需要特定的数组,可以将其指定为固定装置。
该断言不起作用,因为toHaveBeenCalledWith应该是预期结果并且不能包含另一个断言toHaveLength。
为了对toHaveBeenCalledWith包含任何元素的数组进行断言,它应该是:
expect(funcB).toBeCalledWith(Array(3623).fill(expect.anything()))
Run Code Online (Sandbox Code Playgroud)
另一种选择是直接断言参数:
expect(funcB).toBeCalledWith(expect.any(Array))
expect(funcB.mock.calls[0][0]).toHaveLength(3623))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5488 次 |
| 最近记录: |