【发布时间】:2016-11-19 02:26:42
【问题描述】:
我有这个文件来运行我的单元测试:
单元测试.html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Vepo Unit Tests</title>
<link rel="stylesheet" href="node_modules/jasmine-core/lib/jasmine-core/jasmine.css">
<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/jasmine-html.js"></script>
<script src="node_modules/jasmine-core/lib/jasmine-core/boot.js"></script>
</head>
<body>
<!-- #1. add the system.js and angular libraries -->
<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="systemjs.config.js"></script>
<script>
// #2. Import the spec files explicitly
Promise.all([
System.import('js/app/landing-page/landing-page.component.spec.js'),
System.import('js/app/pipes/my-uppercase.pipe.spec.js')
])
// #3. wait for all imports to load ...
// then re-execute `window.onload` which
// triggers the Jasmine test-runner start
// or explain what went wrong.
.then(window.onload)
.catch(console.error.bind(console));
</script>
</body>
</html>
当我使用 npm start 启动服务器,然后在 Web 浏览器中浏览到 localhost:3000/unit-tests.html 时,它会闪烁两个单元测试的绿色字样(就像通过的测试一样),然后结果就消失了。
它并没有说没有找到单元测试,一旦它消失了。它只有这个:
没有控制台错误。
编辑:让它在重新加载前等待 9 秒:
<script>
Promise.all([
System.import('js/app/landing-page/landing-page.component.spec'),
System.import('js/app/pipes/my-uppercase.pipe.spec')
]).then(setTimeout(window.onload, 9000)).catch(console.error.bind(console));
</script>
使测试结果显示 9 秒然后消失
但答案不是删除承诺,直接导入测试脚本,因为如果测试比几行代码更大,则找不到脚本。
问题在于,当窗口重新加载时,它会使所有内容都消失。但如果没有重新加载,它就找不到大的单元测试。它会找到微小的。
如何阻止测试结果在重新加载窗口时消失?
【问题讨论】:
标签: unit-testing jasmine