Я думаю, что способ сравнения вывода в вашем тесте приведет к тому, что он пройдет, потому что аргумент действительно читается как:
{ "button": <button /> }
Вместо экземпляра элемента документа.
Вы всегда можете присвоить уникальный идентификатор каждой кнопке во время создания, чтобы сделать флешку подтверждения.
test('foo', () => {
const button1 = document.createElement('button');
const button2 = document.createElement('button');
button1.id = 'button1';
button2.id = 'button2';
const foo = jest.fn();
foo({button: button1});
expect(foo).toBeCalledWith({button: button1}); // Will pass
expect(foo).toBeCalledWith({button: button2}); // Will fail
});
Если вы хотите использовать строгую проверку равенства toBe (), я не знаю осопоставимый метод Object Contains с Jest, но вы можете запросить аргументы, которые предоставляет Jest:
expect(foo.mock.calls[0][0].button).toBe(button1);