我在基于环境的页面加载中动态地向文档 <script>
添加了一个 CC_1标签。
功能:
export const loadScript = () => {
// load script tag into head
const HEAD = document.getElementsByTagName('head')
const SCRIPT_TAG = document.createElement('script')
SCRIPT_TAG.setAttribute('src', process.env.SCRIPT_SRC)
SCRIPT_TAG.setAttribute('async', true)
HEAD[0].append(SCRIPT_TAG)
}
我想编写一个测试,该测试是否一旦运行了loadScript()
功能,即<script>
标签将其插入头部。我们的环境是用玩笑建立的,我还没有找到一个令人满意的例子,可以演示如何做或有效。
我是测试的新手,并感谢提供的任何解决方案或提示。
我想最简单的测试方法就是这样:
test('loadScript', () => {
process.env.SCRIPT_SRC = 'the-src';
loadScript();
expect(document.head.innerHTML).toBe('<script src="the-src" async="true"></script>');
});
这是因为Jest
的默认测试环境是jsdom
,它模拟document
。
test('loadScript', () => {
loadScript();
const script = document.getElementsByTagName('script')[0];
// trigger the callback
script.onreadystatechange(); // or script.onLoad();
expect("something which you have on load").toBe('expected result on load');
});