У меня есть функция, которая создает элемент сценария и добавляет его в тело.Это выглядит примерно так:
const s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'https://myscript';
s.id = 'abc';
document.body.appendChild(s);
Я использую тестирование с использованием jest и слежу за функцией appendChild
, чтобы утверждать, что переданные параметры - это то, что я ожидаю.Что у меня выглядит так:
jest.spyOn(document.body, 'appendChild');
doFunction();
expect(document.body.appendChild).toBeCalledWith(
'<script id="abc" src="https://myscript" type="text/javascript" />',
);
Несмотря на совпадение строк, аргумент, который передается в appendChild
, не строка, а объект.
typeof document.body.appendChild.mock.child[0][0] // object
Я также пытался утверждать против объекта ({ type: '...' }
, но не повезло. Какие еще варианты есть с jest для проверки этого бита кода?