Як я можу отримати аргументи, викликані функцією jest mock?


86

Як я можу отримати аргументи, викликані функцією jest mock?

Я хочу перевірити об'єкт, який передається як аргумент.


3
Якщо я дізнаюся, як вирішити питання, в чому проблема? У цьому питанні я не ставлю код, бо не знав, як почати. Це була мета запитання.
Bruno Quaresma

1
@PLATANIUM ммм що? Перш за все, він може вільно відповісти на власне запитання, оскільки сайт фактично дозволяє йому це робити. 2-е, його відповідь правильна.
Мартін Доусон,

Відповіді:


137

Просто використовуйте mockObject.calls . У моєму випадку я використовував:

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

Ось документація про mockвласність


Крім макетної функції, чи існує інший спосіб отримати аргументи функції на жарт?
Кодер

4
Дякую! Іншим і моєму майбутньому: Якщо ви отримаєте помилку компіляції Tuple type '[]' of length '0' has no element at index '0'.на секунду 0, ви можете обійти її за допомогою const call = (mockUpload.mock.calls[0] as any[])[0];.
Камерон Хадсон,

40

Ось простий спосіб затвердити переданий параметр.

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

а якщо другий аргумент - це функція, до якої я не маю доступу?
Hugo Licon

2
У такому випадку, використовуйте такий підхідmockUpload.mock.calls[0]
Senthil Arumugam SP

1
Те саме, що й інша відповідь. Це не відповідає на питання. Він не питає, як ПЕРЕВІРИТИ, з яким аргументом він був викликаний, а навпаки ОТРИМАЄ цей аргумент, щоб він міг його перевірити.
Хаві Марзан,

-1

Я вважаю lastCalledWith()за краще toHaveBeenCalledWith(). Вони обидва однакові, але перший коротший і допомагає мені зменшити когнітивне навантаження при читанні коду.

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

3
Це не відповідає на питання. Він не запитує, як ПЕРЕВІРИТИ, з яким аргументом він був викликаний, а навпаки ОТРИМАЄ цей аргумент, щоб він міг його перевірити.
Хаві Марзан,

1
@ JaviMarzán Я прийшов із google, бо хотів знати, як затвердити аргументи функції. Люди, які приходять до цього питання, можуть не обов'язково захотіти перевірити аргументи, а отримати аргумент і аргументувати його. Ось чому я залишаю відповідь тут в надії допомогти іншим, хто має подібні проблеми.
NearHuscarl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.