我们希望编写一个Service Worker,对加载的文件执行源代码转换。为了测试这个功能,我们使用Karma。
我们的测试导入源文件,对其执行源代码转换。只有当Service Worker执行转换时,测试才会成功;当Service Worker未激活时,测试失败。
在本地,我们可以使用
然而,对于持续集成,我们需要单次运行模式。因此,在测试运行期间,我们的Service Worker未激活,相应地导致测试失败。此外,连续两次运行也无法解决此问题,因为Karma会重新启动使用的浏览器(因此我们失去了Service Worker)。
所以,问题是如何使Service Worker在测试运行中可用?例如,通过保留Karma使用的浏览器实例。
我们的测试导入源文件,对其执行源代码转换。只有当Service Worker执行转换时,测试才会成功;当Service Worker未激活时,测试失败。
在本地,我们可以使用
singleRun: false
启动Karma,并监视更改的文件以重新启动测试。然而,Service Workers对于最初加载它们的页面不起作用。因此,每个测试用例都成功,但第一个测试用例失败。然而,对于持续集成,我们需要单次运行模式。因此,在测试运行期间,我们的Service Worker未激活,相应地导致测试失败。此外,连续两次运行也无法解决此问题,因为Karma会重新启动使用的浏览器(因此我们失去了Service Worker)。
所以,问题是如何使Service Worker在测试运行中可用?例如,通过保留Karma使用的浏览器实例。