我有一个创建脚本元素并将其添加到页面主体的函数,代码看起来像这样:
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中,还有哪些选项可以测试这段代码?
expect.any(HTMLScriptElement)
结合使用,可以测试我需要的所有内容。 - Christopher Moore