Làm cách nào để lấy các đối số được gọi trong hàm jest mock?


85

Làm cách nào để lấy các đối số được gọi trong hàm jest mock?

Tôi muốn kiểm tra đối tượng được truyền dưới dạng đối số.


3
Nếu tôi phát hiện ra cách giải quyết câu hỏi vấn đề là gì? Trong câu hỏi này, tôi không đặt mã vì tôi không biết bắt đầu như thế nào. Đó là mục đích câu hỏi.
Bruno Quaresma

1
@PLATANIUM umm cái gì? Trước hết, anh ấy có thể tự do trả lời câu hỏi của mình vì trang web thực sự cho phép anh ấy làm điều đó. Thứ 2, câu trả lời của anh ấy là đúng.
Martin Dawson

Câu trả lời:


137

Chỉ cần sử dụng mockObject.calls . Trong trường hợp của tôi, tôi đã sử dụng:

const call = mockUpload.mock.calls[0][0]

Đây là tài liệu về mocktài sản


Ngoài hàm giả, có cách nào khác để lấy các đối số của hàm trong jest không?
Coder

3
Cảm ơn bạn! Đối với những người khác và tương lai của tôi: Nếu bạn gặp lỗi biên dịch Tuple type '[]' of length '0' has no element at index '0'.vào ngày thứ hai 0, bạn có thể khắc phục nó bằng cách sử dụng const call = (mockUpload.mock.calls[0] as any[])[0];.
Cameron Hudson

40

Đây là một cách đơn giản để xác nhận tham số được truyền vào.

expect(mockedFunction).toHaveBeenCalledWith("param1","param2");

điều gì sẽ xảy ra nếu đối số thứ hai là một hàm mà tôi không có quyền truy cập?
Hugo Licon

2
Trong trường hợp đó, hãy thực hiện theo cách tiếp cận nàymockUpload.mock.calls[0]
Senthil Arumugam SP.

1
Tương tự như câu trả lời khác. Điều này không trả lời câu hỏi. Anh ta không hỏi làm thế nào để KIỂM TRA đối số đó được gọi bằng gì, mà là NHẬN đối số đó để anh ta có thể kiểm tra nó.
Javi Marzán

0

Tôi thích lastCalledWith()hơn toHaveBeenCalledWith(). Cả hai đều giống nhau nhưng cái trước ngắn hơn và giúp tôi giảm tải nhận thức khi đọc mã.

expect(mockedFn).lastCalledWith('arg1', 'arg2')

3
Điều này không trả lời câu hỏi. Anh ta không hỏi làm thế nào để KIỂM TRA đối số đó được gọi bằng gì, mà là NHẬN đối số đó để anh ta có thể kiểm tra nó.
Javi Marzán

1
@ JaviMarzán Tôi đến từ google vì tôi muốn biết cách xác nhận các đối số của hàm. Những người đến với câu hỏi này có thể không nhất thiết muốn kiểm tra các lập luận, nhưng để lấy các lập luận và khẳng định nó. Đó là lý do tại sao tôi để câu trả lời ở đây với hy vọng sẽ giúp đỡ những người khác gặp vấn đề tương tự.
NearHuscarl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.